在 POST 方法中发送 Json 请求

时间:2021-07-08 13:25:25

标签: java rest http-post ibm-bpm

我有一个来自 Queue 的 JSON 字符串。我需要将它作为请求参数发送以通过 REST 在 BPM 中创建一个案例。 休息服务输入-请求(字符串) 因此,我形成了以下内容并尝试调用其余服务

    Request- {\"request\":\"{'hits' : [{'id' : '50', 'version' : 1}]}\"}

When i use the uri="https://localhost:9044/rest/bpm/wle/v1/service/RISKM%40CreateCase?action=start&params=%7B%22request%22%3A%22%7B+%5C%22hits%5C%22+%3A+%5B+%7B+%5C%22id%5C%22+%3A+%5C%2250%5C%22%2C+%5C%22version%5C%22+%3A+1%7D%5D%7D%22%7D&createTask=false&parts=all";

以上工作正常

但是当我使用下面的

uri="https://localhost:9044/rest/bpm/wle/v1/service/RISKM@CreateCase?action=start&createTask=false&parts=all&params={\"request\":\"{'hits' : [{'id' : '50', 'version' : 1}]}\"}";

它给出了错误:- 错误----不支持HTTP版本

java.lang.NullPointerException
Response 500
    at java.io.Reader.<init>(Reader.java:89)
    at java.io.InputStreamReader.<init>(InputStreamReader.java:118)
    at com.sita.createCase.Restcall2.readContent(Restcall2.java:193)
    at com.sita.createCase.Restcall2.makeRestCall(Restcall2.java:162)
    at com.sita.createCase.Restcall2.CallRest(Restcall2.java:94)
    at com.sita.createCase.Restcall2.main(Restcall2.java:216)

如果我在邮递员中复制相同的网址,则在这两种情况下都可以正常工作。 需要有关如何从 Java 客户端发送此请求的帮助。 还有如何对json字符串进行字符串化?

下面是Java客户端代码

       HttpsURLConnection connection = null;
            try {
            URL url = new URL(uri);
            connection = (HttpsURLConnection) url.openConnection();
            connection.setRequestMethod("POST");    
            connection.setRequestProperty("Authorization", authorization);
            connection.connect();
        }

1 个答案:

答案 0 :(得分:0)

您必须将每个参数作为单个参数发送。 无法将对象作为地址中的参数发送。 如果要发送对象,必须将其作为正文发送。 在这种情况下你应该写:

<块引用>

id=50&version=1

代替:

<块引用>

params={"request":"{'hits' : [{'id' : '50', 'version' : 1}]}"}"

并处理后端对象的验证。