Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将多个参数作为一个http查询参数传递的最佳方法是什么?_Java_Http_Url_Oauth_Salesforce - Fatal编程技术网

Java 将多个参数作为一个http查询参数传递的最佳方法是什么?

Java 将多个参数作为一个http查询参数传递的最佳方法是什么?,java,http,url,oauth,salesforce,Java,Http,Url,Oauth,Salesforce,我有一个java web应用程序(servlet),它使用SalesForce进行用户身份验证。此OAuth身份验证提供“state”查询参数,以在回调时传递任何数据。我有一组参数,我想通过这个“状态”查询参数传递这些参数。最好的方法是什么?特别是在java中 或者换句话说,将数组或映射作为单个http查询参数传递的最佳方式是什么?您可以将所有内容都放在json或xml格式或任何其他格式中,然后在base64中编码为一个大字符串。注意,参数可能会对某些浏览器/web服务器施加一些硬限制。您可以将

我有一个java web应用程序(servlet),它使用SalesForce进行用户身份验证。此OAuth身份验证提供“state”查询参数,以在回调时传递任何数据。我有一组参数,我想通过这个“状态”查询参数传递这些参数。最好的方法是什么?特别是在java中


或者换句话说,将数组或映射作为单个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,我这样做,似乎是有效的解决方案。