繁体   English   中英

如何在 Java 中发布请求以获取 JSON 中的响应

[英]How to post request in java to get the response in JSON

我想以相同的格式发布请求。

    POST /mga/sps/oauth/oauth20/token HTTP/1.1
    Host: example.com
    Content-Type: application/x-www-form-urlencoded
    Authorization: Basic aaabbbCCCdddeeefffGGG
    client_id=xxx&client_secret=yyy&grant_type=authorization_code
    &code=3v6MJzt9vKtRkxpTFnkJG3IyspWC2k
    &redirect_uri=xyz%2Ffolder

我已经实现但收到错误的请求并且无法打印我发送的帖子内容我还想在发送此请求后获得 json 响应。

String urlParameters  = "grant_type=authorization_code"+"&redirect_uri="+session.getAttribute("redirect_uri")+"&code_verifier="+session.getAttribute("codeVerifier")+"&code="+session.getAttribute("code")+"&state="+session.getAttribute("state");
        byte[] postData = urlParameters.getBytes( StandardCharsets.UTF_8 );
        int postDataLength = postData.length;
        URL url = new URL( "https://example/oauth20/token" );
        HttpURLConnection conn= (HttpURLConnection) url.openConnection();           
        conn.setDoOutput(true);
        conn.setInstanceFollowRedirects(false);
        conn.setRequestMethod("POST");
     
        conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); 
        conn.setRequestProperty("charset", "utf-8");
        conn.setRequestProperty("Content-Length", 
       Integer.toString(postDataLength ));
        conn.setRequestProperty("Host","example.com");
        conn.setRequestProperty("Authorization","clientID=xyz");
        conn.setUseCaches(false);
        DataOutputStream wr = new 
       DataOutputStream(conn.getOutputStream());
        wr.write(postData);
        System.out.println(conn.getResponseCode());
        System.out.println(conn.getResponseMessage());
        conn.disconnect();

 

您有多种选择。

  1. 您可以从Java HTTP 客户端开始 -参考

HTTP 客户端是在 Java 11 中添加的。它可用于通过网络请求 HTTP 资源。 它支持同步和异步编程模型的 HTTP/1.1 和 HTTP/2,将请求和响应主体作为反应流处理,并遵循熟悉的构建器模式。

  1. Apache HttpClient -参考

  2. RestTemplate -参考

  3. JAX-RS 客户端-示例

  4. Spring 5 WebClient -示例

  5. OkHttpClient -示例

比较

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM