在 Java 中发送 HTTP POST 请求

新手上路,请多包涵

让我们假设这个 URL …

 http://www.example.com/page.php?id=10

(这里 id 需要在 POST 请求中发送)

我想将 id = 10 发送到服务器的 page.php ,它以 POST 方法接受它。

我如何在 Java 中做到这一点?

我试过这个:

 URL aaa = new URL("http://www.example.com/page.php");
URLConnection ccc = aaa.openConnection();

但我仍然不知道如何通过 POST 发送它

原文由 Jazz 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 674
1 个回答

更新的答案

由于原始答案中的某些类在较新版本的 Apache HTTP 组件中已弃用,因此我发布了此更新。

顺便说一句,您可以在 此处 访问完整文档以获取更多示例。

 HttpClient httpclient = HttpClients.createDefault();
HttpPost httppost = new HttpPost("http://www.a-domain.example/foo/");

// Request parameters and other properties.
List<NameValuePair> params = new ArrayList<NameValuePair>(2);
params.add(new BasicNameValuePair("param-1", "12345"));
params.add(new BasicNameValuePair("param-2", "Hello!"));
httppost.setEntity(new UrlEncodedFormEntity(params, "UTF-8"));

//Execute and get the response.
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();

if (entity != null) {
    try (InputStream instream = entity.getContent()) {
        // do something useful
    }
}

原答案

我推荐使用 Apache HttpClient。它更快更容易实施。

 HttpPost post = new HttpPost("http://jakarata.apache.org/");
NameValuePair[] data = {
    new NameValuePair("user", "joe"),
    new NameValuePair("password", "bloggs")
};
post.setRequestBody(data);
// execute method and handle any error responses.
...
InputStream in = post.getResponseBodyAsStream();
// handle response.

有关详细信息,请查看此 URL: http ://hc.apache.org/

原文由 mhshams 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏