我想从以下检索JSON数据: https://git.eclipse.org/r/#/c/11376/
请求URL: https://git.eclipse.org/r/gerrit/rpc/ChangeDetailService
请求方法: POST
请求报头:
Accept:application/json
Content-Type:application/json; charset=UTF-8
要求有效载荷:
{"jsonrpc":"2.0","method":"changeDetail","params":[{"id":11376}],"id":1}
我已经尝试过这个答案 ,但我得到400 BAD REQUEST
。
谁能帮我整理了这一点?
谢谢。
下面的代码对我的作品。
//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);
方法实现:
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());
}
}
我试着用REST客户端。
头:
- POST / R /格里特/ RPC / ChangeDetailService HTTP / 1.1
- 主持人:git.eclipse.org
- 用户代理:Mozilla的/ 5.0(Windows NT的5.1; RV:18.0)壁虎/ 20100101火狐/ 18.0
- 接受:应用/ JSON
- 接受语言:空
- 接受编码:gzip,放气,SDCH
- 接收字符集:ISO-8859-1,utf-8; Q = 0.7,*; Q = 0.3
- 内容类型:应用/ JSON; 字符集= UTF-8
- 内容长度:73
- 连接:保持活跃
它工作正常。 我检索200个好身体OK。
为什么你设置你的请求的状态代码? 和多申报“ 接受 ”,与接受:应用/ JSON,应用/ JSON,应用/ jsonrequest。 只是一个说法是不够的。