I want to retrieve the JSON data from the following:
https://git.eclipse.org/r/#/c/11376/
Request URL: https://git.eclipse.org/r/gerrit/rpc/ChangeDetailService
Request Method: 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
.
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 :
- POST /r/gerrit/rpc/ChangeDetailService HTTP/1.1
- Host: git.eclipse.org
- User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:18.0) Gecko/20100101 Firefox/18.0
- Accept: application/json
- Accept-Language: null
- Accept-Encoding: gzip,deflate,sdch
- accept-charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
- Content-Type: application/json; charset=UTF-8
- Content-Length: 73
- Connection: keep-alive
it works fine. I retrieve 200 OK with a good body.
Why do you set a status code in your request?
and multiple declaration "Accept" with Accept:application/json,application/json,application/jsonrequest. just a statement is enough.