[英]How to send Request payload to REST API in java?
I want to retrieve the JSON data from the following: https://git.eclipse.org/r/#/c/11376/ 我想从以下内容中检索JSON数据: https : //git.eclipse.org/r/#/c/11376/
Request URL: https://git.eclipse.org/r/gerrit/rpc/ChangeDetailService
请求URL:
https://git.eclipse.org/r/gerrit/rpc/ChangeDetailService
: https://git.eclipse.org/r/gerrit/rpc/ChangeDetailService
Request Method: POST
请求方法:
POST
Request Headers: 请求标题:
Accept:application/json
Content-Type:application/json; charset=UTF-8
Request Payload: 请求有效负载:
{"jsonrpc":"2.0","method":"changeDetail","params":[{"id":11376}],"id":1}
I already tried this answer but I am getting 400 BAD REQUEST
. 我已经尝试过这个答案,但我得到了
400 BAD REQUEST
。
Can anyone help me sort this out? 任何人都可以帮我解决这个问题吗?
Thanks. 谢谢。
The following code works for me. 以下代码适用于我。
//escape the double quotes in json string
String payload="{\"jsonrpc\":\"2.0\",\"method\":\"changeDetail\",\"params\":[{\"id\":11376}],\"id\":2}";
String requestUrl="https://git.eclipse.org/r/gerrit/rpc/ChangeDetailService";
sendPostRequest(requestUrl, payload);
method implementation: 方法实现:
public static String sendPostRequest(String requestUrl, String payload) {
try {
URL url = new URL(requestUrl);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoInput(true);
connection.setDoOutput(true);
connection.setRequestMethod("POST");
connection.setRequestProperty("Accept", "application/json");
connection.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
OutputStreamWriter writer = new OutputStreamWriter(connection.getOutputStream(), "UTF-8");
writer.write(payload);
writer.close();
BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream()));
StringBuffer jsonString = new StringBuffer();
String line;
while ((line = br.readLine()) != null) {
jsonString.append(line);
}
br.close();
connection.disconnect();
return jsonString.toString();
} catch (Exception e) {
throw new RuntimeException(e.getMessage());
}
}
I tried with a rest client. 我尝试了一个休息客户端。
Headers : 标题:
it works fine. 它工作正常。 I retrieve 200 OK with a good body.
我用一个好身体检索200 OK。
Why do you set a status code in your request? 为什么在请求中设置状态代码? and multiple declaration " Accept " with Accept:application/json,application/json,application/jsonrequest.
使用Accept:application / json,application / json,application / jsonrequest进行多次声明“ Accept ”。 just a statement is enough.
只是一个声明就足够了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.