如何请求负载发送到REST API在Java中?(How to send Request paylo

2019-07-22 16:05发布

我想从以下检索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

谁能帮我整理了这一点?

谢谢。

Answer 1:

下面的代码对我的作品。

//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());
    }

}


Answer 2:

我试着用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。 只是一个说法是不够的。



文章来源: How to send Request payload to REST API in java?