我们假设这个URL ...
http://www.example.com/page.php?id=10
(这里需要在POST请求中发送id)
我想将 id = 10
发送到服务器的 page.php
,它在POST方法中接受它 .
我怎样才能从Java中做到这一点?
我试过这个:
URL aaa = new URL("http://www.example.com/page.php");
URLConnection ccc = aaa.openConnection();
但我仍然无法弄清楚如何通过POST发送它
8 回答
我建议使用基于apache http api构建的http-request .
使用Apache HTTP组件的一种简单方法是
看看Fluent API
调用
HttpURLConnection.setRequestMethod("POST")
和HttpURLConnection.setDoOutput(true);
实际上只需要后者作为POST然后成为默认方法 .在vanilla Java中发送POST请求很容易 . 从
URL
开始,我们需要使用url.openConnection();
将其转换为URLConnection
. 之后,我们需要将其转换为HttpURLConnection
,因此我们可以访问其setRequestMethod()
方法来设置我们的方法 . 我们最后说我们将通过连接发送数据 .然后我们需要说明我们要发送的内容:
发送简单表格
来自http表单的普通POST具有well defined格式 . 我们需要将输入转换为以下格式:
然后,我们可以使用正确的标头将表单内容附加到http请求并发送它 .
发送JSON
我们也可以使用java发送json,这也很简单:
请记住,不同的服务器接受json的不同内容类型,请参阅this问题 .
使用java post发送文件
由于格式更复杂,因此可以认为发送文件更具挑战性 . 我们还将添加支持将文件作为字符串发送,因为我们不希望将文件完全缓冲到内存中 .
为此,我们定义了一些辅助方法:
然后,我们可以使用这些方法创建一个多部分发布请求,如下所示:
第一个答案很棒,但我必须添加try / catch以避免Java编译器错误 .
另外,我在如何阅读使用Java库的
HttpResponse
时遇到了麻烦 .这是更完整的代码:
更新答案:
由于原始答案中的某些类在较新版本的Apache HTTP Components中已弃用,因此我发布此更新 .
顺便说一句,您可以访问完整文档以获取更多示例here .
原文答案:
我建议使用Apache HttpClient . 它更快,更容易实现 .
有关更多信息,请查看此网址:http://hc.apache.org/
使用post请求发送参数的最简单方法:
你做完了 . 现在你可以使用
responsePOST
. 获取响应内容为字符串: