【问题标题】:How do I pass json as a query parameter on Rest Post web service in javajava - 如何在Java中的Rest Post Web服务上将json作为查询参数传递
【发布时间】:2018-03-01 03:11:46
【问题描述】:

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

例如:

https://testvpa.net/WebService/ViALoggingRestWS/ViALoggingService.svc/StartCall?parameter={"machineName":"KK-IVR01","appName":"KKApp","startTime":"2018-02-06T21:38:32","portID":"01","ani":"9189280000","dnis":"8559281111","ctiCallID":"01"}

我正在尝试这样的事情:

....

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);
}

....

但我在运行时收到“无效 URI”。它似乎不喜欢查询参数是 json 字符串。我在某处读到有关编码 json 字符串的信息……我是否需要对 json 字符串进行编码?

【问题讨论】:

    标签: java json rest query-parameters


    【解决方案1】:

    如果您使用 POST 请求,则应在请求正文中传递 json 对象,而不是在查询参数中。

    【讨论】:

    • 您应该添加 OP 将如何执行此操作。否则,恐怕这不仅仅是评论。
    • 不幸的是,提供此 Web 服务的供应商表示必须以这种方式使用它。将json放在正文中是行不通的,必须是查询参数。
    【解决方案2】:

    您可以查看此问题了解更多详情:Which characters make a URL invalid?

    一般来说,URI 中接受的字符是:[A-Z][a-z][0-9]-._~

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

    不允许使用其他所有字符,并且必须进行百分比编码。第二组字符也应该进行百分比编码以避免任何解析问题。

    要对字符进行百分比编码,您需要获取其十六进制值(例如,对于 space 字符,十六进制值为 20)并在其前面加上 % 字符。所以John Doe 变成了John%20Doe

    【讨论】:

      猜你喜欢
      • 2015-10-30
      • 1970-01-01
      • 2011-04-21
      • 1970-01-01
      • 1970-01-01
      • 2016-08-07
      • 1970-01-01
      • 2019-09-11
      • 1970-01-01
      相关资源
      最近更新 更多