我是靠谱客的博主 跳跃小蝴蝶,最近开发中收集的这篇文章主要介绍使用HttpURLConnection 请求Http post请求,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

最近开发项目中需要写一段Http post请求的代码,其实代码本身没什么难度,网上一搜一大片,但是关键是要和第三方的对端进行联调,总之联调过程中出现了无数问题,从对端一开始提供get请求的服务,到不知道什么原因导致无法建立请求连接,到无缘无故又联调成功,期间经历了各种折磨。虽然到最后都不知道是什么原因导致的联调失败,不过还好通过这个问题,对http请求有了进一步的了解,废话不多说,下面进行总结。

1、首先附上源代码

private String getHttpResponseByPost(String input, String url) throws BaseAppException {
HttpURLConnection httpConnection = null;
StringBuffer responsebf = new StringBuffer();
try {
URL restServiceURL = new URL(url);
httpConnection = (HttpURLConnection) restServiceURL.openConnection(); //①
httpConnection.setDoOutput(true);
//②
httpConnection.setDoInput(true);
//③
httpConnection.setUseCaches(false);
//④
httpConnection.setRequestProperty("Content-Type", "text/xml; charset=UTF-8"); //⑤
httpConnection.setRequestMethod("POST");
//⑥
httpConnection.setConnectTimeout(30000);
//⑦
httpConnection.setReadTimeout(3000);
//⑧
httpConnection.connect();
//⑨
OutputStream outputStream = httpConnection.getOutputStream();
//⑩
outputStream.write(input.getBytes());
outputStream.flush();
//⑪
outputStream.close();
//⑫
BufferedReader responseBuffer = new BufferedReader(
new InputStreamReader((httpConnection.getInputStream())));
//⑬
String output = "";
while ((output = responseBuffer.readLine()) != null) {
responsebf.append(output);
}
httpConnection.disconnect();
//⑭
}
catch (Exception e) {
return null;
}
finally {
if (httpConnection != null) {
httpConnection.disconnect();
}
}
return responsebf.toString();
}

2、下面对每一个方法进行解释

①openConnection()

该方法实际上是根据URL的请求协议(此处是http)生成的URLConnection类,为了使用子类HttpURLConnection的更多的API,故此处将进行强转。

②setDoOutput 

如果打算使用 URL 连接进行输出,则将 DoOutput 标志设置为 true;如果不打算使用,则设置为 false。默认值为 false

③setDoInput

如果打算使用 URL 连接进行输入,则将 DoInput 标志设置为 true;如果不打算使用,则设置为 false。默认值为 true

④setUseCaches

默认值为true,一般get请求可以设置为使用缓存,post请求不可使用缓存

⑤setRequestProperty

根据不同的报文格式可以设置不同的文本类型,text/xml,text/json.....

⑥setRequestMethod

请求类型,可以是“POST”或者"GET"

⑦setConnectTimeout

设置连接主机超时(单位:毫秒) ,如果不设置超时,在网络异常的情况下,可能会导致程序僵死而不继续往下执行

⑧setReadTimeout

设置从主机读取数据超时(单位:毫秒) ,如果不设置,在网络异常的情况下,可能会导致程序僵死

⑨connect

打开到此 URL 引用的资源的通信链接,如果在已打开连接的情况下调用 connect 方法,则忽略该调用。 

getOutputStream方法中会隐含地调用connect,所以connect方法可以不需要显示调用。

⑩getOutputStream

获取url对应的输出流

⑪flush

刷新输出流,将任何字节都写入输出流中

⑫close

关闭输出流,不能再向输出流写入任何数据,先前写入的数据存在于内存缓冲区中,在调用下边的getInputStream()函数时才把准备好的http请求正式发送到服务器

⑬getInputStream

将内存缓冲区中封装好的完整的HTTP请求电文发送到服务端,实际发送请求的代码段就在这里

⑭disconnect

断开url连接

转载于:https://my.oschina.net/kimyeongnam/blog/824723

最后

以上就是跳跃小蝴蝶为你收集整理的使用HttpURLConnection 请求Http post请求的全部内容,希望文章能够帮你解决使用HttpURLConnection 请求Http post请求所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(55)

评论列表共有 0 条评论

立即
投稿
返回
顶部