Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.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中,如何将json作为查询参数传递给Rest Post web服务_Java_Json_Rest_Query Parameters - Fatal编程技术网

在java中,如何将json作为查询参数传递给Rest Post web服务

在java中,如何将json作为查询参数传递给Rest Post web服务,java,json,rest,query-parameters,Java,Json,Rest,Query Parameters,在java中,如何将json作为查询参数传递给Rest Post web服务 例如: ?参数={“machineName”:“KK-IVR01”,“appName”:“KKApp”,“startTime”:“2018-02-06T21:38:32”,“portID”:“01”,“ani”:“9189280000”,“dnis”:“8559281111”,“ctiCallID”:“01”} 我正在尝试这样的事情: 但我在运行时得到一个“无效URI”。它似乎不喜欢查询参数是json字符串。我在某

在java中,如何将json作为查询参数传递给Rest Post web服务

例如:

参数={“machineName”:“KK-IVR01”,“appName”:“KKApp”,“startTime”:“2018-02-06T21:38:32”,“portID”:“01”,“ani”:“9189280000”,“dnis”:“8559281111”,“ctiCallID”:“01”}

我正在尝试这样的事情:


但我在运行时得到一个“无效URI”。它似乎不喜欢查询参数是json字符串。我在某个地方读到关于编码json字符串的内容。。。我是否需要对json字符串进行编码?

如果使用POST请求,则应在请求正文中传递json对象,而不是在查询参数中传递。有关详细信息,请查看此问题:

一般来说,URI中可接受的字符是:
[a-Z][a-Z][0-9]-。\uz~

也允许使用以下字符,但在URI的某些部分具有特殊含义:
:/?#[]@!$&'()*+,;=

不允许每隔一个字符,并且必须进行百分比编码。第二组字符也应该进行百分比编码,以避免任何解析问题


要对字符进行百分比编码,请获取其十六进制值(例如,对于
空格
字符,十六进制值为20),并以
%
字符作为前缀。因此,
johndoe
变成了
John%20Doe

你应该添加OP是如何做到这一点的。否则,我恐怕这仅仅是一个评论。请参考这个问题-不幸的是,提供此web服务的供应商说它必须以这种方式使用。将json放在主体中不起作用,必须是一个查询参数。
try{
    JSONObject obj = new JSONObject();
    obj.put("machineName",machineName);
    obj.put("appName", appName);
    obj.put("startTime", formattedCurrentDate);
    obj.put("portID",portID);
    obj.put("ani",ani);
    obj.put("dnis", dnis);
    obj.put("ctiCallID", ctiCallID);

    String strobj = obj.toString();

    String uri = wsUri+"/StartCall?";

    HttpClient client = new HttpClient();
    client.getParams().setConnectionManagerTimeout(1300);
    client.getParams().setSoTimeout(13000);

    PostMethod method = new PostMethod(uri);
    method.addRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    method.setQueryString("parameter="+strobj );

    int statusCode = client.executeMethod(method);

    byte[] responseBody = method.getResponseBody();
    output = new String(responseBody);
}