好问题
Good  Question
  • 首 页
  • 问题
    • PHP
    • JAVA
    • CPlusPlus
    • C#
    • SQL
  • 关 于
  • 联 系
如何使用Java通过POST方法轻松发送HTTP请求并带参数? 关闭 返回上一级  

如何使用Java通过POST方法轻松发送HTTP请求并带参数?
+ 查看更多

发布日期:2018-03-08 17:23
分类:JAVA
浏览次数:148
我成功地使用此代码通过GET方法发送带有一些参数的HTTP请求:
function 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结构吗?
任何帮助都将非常感谢。

回答

在GET请求中,参数作为URL的一部分发送。
在POST请求中,参数作为请求的主体在标题之后发送。
要使用HttpURLConnection执行POST,您需要在打开连接后将参数写入连接。
这段代码可以让你实现:
String urlParameters  = "param1=a¶m2=b¶m3=c";
byte[] postData       = urlParameters.getBytes( StandardCharsets.UTF_8 );
int    postDataLength = postData.length;
String request        = "http://example.com/index.php";
URL    url            = new URL( request );
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.setUseCaches( false );
try( DataOutputStream wr = new DataOutputStream( conn.getOutputStream())) {
   wr.write( postData );
}
上一篇使用命令提示符运行jar文件
如何在Java中定义自定义异常类,最简单的方法是什么?下一篇
下一篇如何在Java中定义自定义异常类,最简单的方法是什么?

最新文章

  • 函数`__construct`用来干嘛的
    发布日期:2018-03-26
  • 通过访客的IP得到他们的地区
    发布日期:2018-03-26
  • 合并两个PHP对象的最好的方法是什么?
    发布日期:2018-03-26
  • 该如何把一该如何把一个对象转化成数组?
    发布日期:2018-03-26
  • 什么是输出缓冲区?
    发布日期:2018-03-26
  • 在PHP中怎么把用逗号分隔的字符串分隔在一个数组里?
    发布日期:2018-03-26
  • 在PHP中使用foreach循环时查找数组的最后一个元素
    发布日期:2018-03-26
关于好问
收集整理一些有用的问题和回答,造福中国的程序旺和IT喵们!
友情链接
起飞页 
相关信息
版权声明
Copyright © 2016 - 2022  苏州卡达网络科技有限公司 备案号:苏ICP备09008221号