簡體   English   中英

如何在Java中的Rest Post Web服務上將json作為查詢參數傳遞

[英]How do I pass json as a query parameter on Rest Post web service in java

如何在Java中的Rest Post Web服務上將json作為查詢參數傳遞

例如:

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字符串?

如果使用的是POST請求,則應在請求正文中而不是在查詢參數中傳遞json對象。

您可以檢查此問題以獲取更多詳細信息: 哪些字符使URL無效?

一般來說,URI中可接受的字符為: [AZ][az][0-9]-._~

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

不允許其他所有字符,並且必須對其進行百分比編碼。 第二組字符也應進行百分比編碼,以避免任何解析問題。

要對字符進行百分比編碼,請使用其十六進制值(例如,對於space字符,十六進制值為20),並在其前面加上%字符。 因此John Doe成為John%20Doe

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM