Java 将多个参数作为一个http查询参数传递的最佳方法是什么?
我有一个java web应用程序(servlet),它使用SalesForce进行用户身份验证。此OAuth身份验证提供“state”查询参数,以在回调时传递任何数据。我有一组参数,我想通过这个“状态”查询参数传递这些参数。最好的方法是什么?特别是在java中Java 将多个参数作为一个http查询参数传递的最佳方法是什么?,java,http,url,oauth,salesforce,Java,Http,Url,Oauth,Salesforce,我有一个java web应用程序(servlet),它使用SalesForce进行用户身份验证。此OAuth身份验证提供“state”查询参数,以在回调时传递任何数据。我有一组参数,我想通过这个“状态”查询参数传递这些参数。最好的方法是什么?特别是在java中 或者换句话说,将数组或映射作为单个http查询参数传递的最佳方式是什么?您可以将所有内容都放在json或xml格式或任何其他格式中,然后在base64中编码为一个大字符串。注意,参数可能会对某些浏览器/web服务器施加一些硬限制。您可以将
或者换句话说,将数组或映射作为单个http查询参数传递的最佳方式是什么?您可以将所有内容都放在json或xml格式或任何其他格式中,然后在base64中编码为一个大字符串。注意,参数可能会对某些浏览器/web服务器施加一些硬限制。您可以将所有内容都放在json或xml格式或任何其他格式中,然后在base64中编码为一个大字符串。请注意,params可能会对某些浏览器/web服务器施加一些硬限制。因此,我是这样做的。谢谢你们!下面是一些代码片段来说明它是如何为我工作的:
// forming state query parameter
Map<String, String> stateMap = new HashMap<String, String>();
stateMap.put("1", "111");
stateMap.put("2", "222");
stateMap.put("3", "333");
JSONObject jsonObject = new JSONObject(stateMap);
String stateJSON = jsonObject.toString();
System.out.println("stateJSON: " + stateJSON);
String stateQueryParam = Base64.encodeBase64String(stateJSON.getBytes());
System.out.println("stateQueryParam: " + stateQueryParam);
// getting map from state query param
ObjectMapper objectMapper = new ObjectMapper();
stateMap = objectMapper.readValue(Base64.decodeBase64(stateQueryParam.getBytes()), LinkedHashMap.class);
System.out.println("stateMap: " + stateMap);
所以,我是这样做的。谢谢你们!下面是一些代码片段来说明它是如何为我工作的:
// forming state query parameter
Map<String, String> stateMap = new HashMap<String, String>();
stateMap.put("1", "111");
stateMap.put("2", "222");
stateMap.put("3", "333");
JSONObject jsonObject = new JSONObject(stateMap);
String stateJSON = jsonObject.toString();
System.out.println("stateJSON: " + stateJSON);
String stateQueryParam = Base64.encodeBase64String(stateJSON.getBytes());
System.out.println("stateQueryParam: " + stateQueryParam);
// getting map from state query param
ObjectMapper objectMapper = new ObjectMapper();
stateMap = objectMapper.readValue(Base64.decodeBase64(stateQueryParam.getBytes()), LinkedHashMap.class);
System.out.println("stateMap: " + stateMap);
您可以考虑在JSON中对其进行编码,然后使用Base64对JSON字符串进行编码。这就使得大多数人都不会使用参数,并且在通过OAuth..等时非常有弹性。谢谢,杰米,我已经这样做了,看起来像是工作解决方案。你可以考虑在JSON中编码它,然后使用Base64对JSON字符串进行编码。这可以防止大多数人篡改您的参数,并且在通过OAuth等时非常有弹性。谢谢,@Jamie,我这样做,似乎是有效的解决方案。谢谢,@Daniel Luyo,我这样做,似乎是有效的解决方案。谢谢,@Daniel Luyo,我这样做,似乎是有效的解决方案。