我成功使用此代码通过 GET
方法发送带有一些参数的 HTTP
请求
void sendRequest(String request)
{
// i.e.: request = "http://example.com/index.php?param1=a¶m2=b¶m3=c";
URL url = new URL(request);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoOutput(true);
connection.setInstanceFollowRedirects(false);
connection.setRequestMethod("GET");
connection.setRequestProperty("Content-Type", "text/plain");
connection.setRequestProperty("charset", "utf-8");
connection.connect();
}
现在我可能需要通过 POST
方法发送参数(即param1,param2,param3),因为它们非常长 . 我想在该方法中添加一个额外的参数(即String httpMethod) .
如何能够尽可能少地更改上面的代码,以便能够通过 GET
或 POST
发送参数?
我希望改变
connection.setRequestMethod("GET");
至
connection.setRequestMethod("POST");
本来可以做到的,但参数仍然是通过GET方法发送的 .
HttpURLConnection
有任何方法可以帮助吗?有没有有用的Java构造?
任何帮助将非常感谢 .
16 回答
在GET请求中,参数作为URL的一部分发送 .
在POST请求中,参数在标头之后作为请求的主体发送 .
要使用HttpURLConnection执行POST,您需要在打开连接后将参数写入连接 .
这段代码应该让你入门:
这是一个提交表单然后将结果页面转储到
System.out
的简单示例 . 当然,适当地更改URL和POST参数:如果您希望结果为
String
而不是直接打印出来:我无法让Alan's example实际发帖,所以我最终得到了这个:
我发现
HttpURLConnection
真的很麻烦 . 而且你必须编写很多样板,容易出错的代码 . 我需要为我的Android项目提供一个轻量级的包装器,并提供了一个可以使用的库: DavidWebb .上面的例子可以这样写:
您可以在提供的链接上找到替代库的列表 .
我看到其他一些答案已经给出了替代方案,我个人认为直觉上你做的是正确的事情;) . 对不起,在devoxx,几个发言者一直在咆哮这种事情 .
那个_____7665_的HTTPClient / HttpCore库做了这样的工作,我发现他们的API比Java的本机HTTP支持更容易使用 . YMMV当然!
我已阅读上述答案并创建了一个实用程序类来简化HTTP请求 . 我希望它会对你有所帮助 .
Method Call
Utility Class
我遇到过同样的问题 . 我想通过POST发送数据 . 我使用了以下代码:
我使用Jsoup进行解析:
试试这种模式:
这里我发送jsonobject作为参数// jsonobject = {"name":"lucifer","pass":"abc"} // serverUrl =“http://192.168.100.12/testing”//host=192.168.100.12
我强烈建议在apache http api上构建http-request .
对于您的情况,您可以看到示例:
如果您对响应机构不感兴趣
对于http-request的一般发送请求:阅读文档并查看我的答案HTTP POST request with JSON String in JAVA,Sending HTTP POST Request In Java,HTTP POST using JSON in Java
GET和POST方法设置如下...... api调用的两种类型1)get()和2)post() . get()方法从api json数组中获取值以获取值和post()方法在url中的数据post中使用并得到响应 .
您好请使用此类来改进您的post方法
我接受了Boann的回答并用它来创建一个更灵活的查询字符串构建器,它支持列表和数组,就像php的http_build_query方法一样:
这个答案涵盖了使用自定义Java POJO进行POST调用的具体情况 .
使用Gson的maven依赖项将我们的Java对象序列化为JSON .
使用下面的依赖项安装Gson .
对于那些使用gradle可以使用下面
使用的其他进口:
现在,我们可以继续使用Apache提供的HttpPost
上面的代码将返回从POST调用收到的响应代码
看来您还必须调用
connection.getOutputStream()
"at least once"(以及setDoOutput(true)
)才能将其视为POST .所以最低要求的代码是:
你甚至可以在urlString中使用“GET”样式参数 . 虽然这可能会让事情变得混乱 .
你也可以使用NameValuePair .