How to send Request payload to REST API in java?

前端 未结 2 1429
清酒与你
清酒与你 2020-11-30 03:57

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

相关标签:
2条回答
  • 2020-11-30 04:24

    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.

    0 讨论(0)
  • 2020-11-30 04:48

    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());
        }
    
    }
    
    0 讨论(0)
提交回复
热议问题