近日,公司决定使用HttpClient 发送HttpPost请求,跟浦发银行对接数据。发送HttpPost请求传输数据,想讲一下如何用HttpClient 客户端发送HttpPost 请求,传输数据。
1.了解Http
http:为超文本传输协议,是互联网通讯最基础的协议。是用于从WWW服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少
1.创建Httpclient
如java Api所示 HttpClient 是一个接口 ,因此创建HttpClient需创建他的实现类。
如:HttpClient httpClient = new DefaultHttpClient();
或者使用Builder 模式 HttpClient httpClient = HttpClientBuilder.create().build();
或许在这里有人问了。HttpClientBuilder 是什么。。我们可以一起去看看Api
从这里可以看出HttpClientBuilder 是一个类 该类基础Object 可以创建一个CloseableHttpClient 该类也实现了 HttpClient客户端。那么create()和builde()方法呢
那么HttpClient客户端创建好了如何创建请求呢?
二。创建HttpPost请求
从文档可以看出来HttpPost 是一个类 那么我们可以直接实例化这个类 HttpPost httpPost = new HttPost("192.168.0.1"); 然后我们可以看构造器需要传递什么参数
分别为空,String url和URI 类型的
HttpPost请求出来了,那么我们如何传递和设置参数呢
三。创建一个HttpEntity
从反编译可以看出HttpEntity是一个接口 ,那么实现这个接口的有那些类呢?AbstractHttpEntity,BasicHttpEntity,BufferedHttpEntity,ByteArrayEntity,InputStreamEntity,StringEntity。这些接口都实现了HttEntity 接口
我们就以ByteArrayEntity 经行讲解 从API可以看出 ByteArrayEntity的参数
HttpEntity httpEntity = new ByteArrayEntity(json.getBytes("UTF-8"),ContentType.APPLICATION_JSON);
httpEntity 是用来设置和传递传输的。如何赋给HttpPost呢
用HttpPost.setEntity(httpEntity)赋值给HttpPost;
HttpClient 和HttpPost 和HttpEntity 创建好了 ?就可以了忙? 不还差一点
如:需要设置 该请求的超时时间。如果不设置超时时间,会导致该请求长时间等待,无法相应。
1.实例化一个RequestConfig 对象
RequestConfig requestConfig = RequestConfig.custom().setConnectionRequestTimeOUt(3000).setConnectionTimeOut(300).setSocketTimeout(3000).setStaleConnectionCheckEnabled(3000).build();
2.HttpPost.setConfig(requestConfig); 这样就可以设置当前HttpPost请求是否超时了
好了,现在我们就可以利用HttpClient发送httpPost请求了
HttpClient.excete(httpPost);
以下是我封装好的代码,请各位有错在下方留言
好啦,HttpClient发送HttpPost请求 到这里就Ok 了 其实也可以发送HttpGet请求的哦,可以按照我的代码发送一个Get请求哦。