【问题标题】:What is the most simple way to sent HTTP Post request to server向服务器发送 HTTP Post 请求的最简单方法是什么
【发布时间】:2019-05-16 09:37:14
【问题描述】:

我想用 JAVA 编写简单的代码,允许我向服务器发送 HTTP POST 请求

1)请求将包含下一个 JSON

{ “键”:“asd”, “dId”:123456, “一些数据”: { “身份证”:12345, “名称”:“abcd” }, "网址": "https://google.com/", “tdId”:1, “wdId”:0 }

2) 显示来自服务器的 JSON 答案

在 YouTube 上看过很多教程视频,但没有人一步一步简单地解释它

【问题讨论】:

标签: java http server


【解决方案1】:

如果您不想与 JRE 内部 HttpURLConnection 打架,那么您应该看看 HttpClient from Apache Commons

org.apache.commons.httpclient

final HttpClient httpClient = new HttpClient();

String url; // your URL
String body; // your JSON
final int contentLength = body.length();

PostMethod postMethod = new PostMethod(url);
postMethod.setRequestHeader("Accept", "application/json");
postMethod.setRequestHeader("Content-Type", "application/json; charset=utf-8");
postMethod.setRequestHeader("Content-Length", String.valueOf(contentLength));
postMethod.setRequestEntity(new StringRequestEntity(body, "application/json", "utf-8"));

final int statusCode = httpClient.executeMethod(postMethod);
if (statusCode != 200) 
    throw new java.io.IOException(statusCode + ": " + HttpStatus.getStatusText(statusCode));

java.io.InputStream responseBodyAsStream = postMethod.getResponseBodyAsStream();
java.io.StringWriter writer=new StringWriter();
org.apache.commons.io.IOUtils.copy(responseBodyAsStream,writer,java.nio.charset.StandardCharsets.UTF_8);

String responseJSON=writer.toString();

【讨论】:

    【解决方案2】:

    从 JDK 9 开始,就有了HttpClient 类。在 JDK 9 和 JDK 10 中,它处于 incubator 状态。从 JDK 11 开始,它不再是孵化器。我没有在您的帖子中看到任何关于您使用的是哪个 JDK 版本的信息。我错过了什么?这是 JDK 11 的 javadoc 的链接...

    java.net.http.HttpClient

    在我看来,使用 JDK 的HttpClient 类的好处是没有第三方依赖。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-02
      • 2012-12-12
      • 1970-01-01
      相关资源
      最近更新 更多