HttpClient 使用
2020-04-12 本文已影响0人
BestFei
一、引入依赖包
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.5</version>
</dependency>
二、创建连接
private static Client create(){
ClientConfig cc = new DefaultClientConfig();
cc.getProperties().put(ClientConfig.PROPERTY_CONNECT_TIMEOUT, 10*1000);
Client c = Client.create(cc);
return c;
}
三、定义请求方式
1、请求返回类型为 ClientResponse
2、设置请求的地址
WebResource resource = c.resource(String uri);
3、设置请求的Content-Type
type的枚举参考这篇文章 https://docs.oracle.com/javaee/7/api/javax/ws/rs/core/MediaType.html
WebResource.Builder wb = resource.getRequestBuilder();
wb = wb.type(MediaType.APPLICATION_JSON_TYPE);
wb = wb.type(MediaType.MULTIPART_FORM_DATA);
4、设置请求的请求头参数(组)
for (String headerName : param.getHeaders().keySet()){
wb = wb.header(headerName,param.getHeaders().get(headerName));
}
5、设置请求的cookie
wb = wb.cookie(cookie);
6、设置请求的参数
Object f = null;
if(param.isForm()){
f = param.getForm();
if(param.isMulti()){
wb = wb.type(MediaType.MULTIPART_FORM_DATA);
f = param.getMultiPartForm();
}
}
if(param.isJsonData()){
wb = wb.type(MediaType.APPLICATION_JSON_TYPE);
f = param.getJsonData();
}
7、设置https请求
javax.net.ssl.HttpsURLConnection.setDefaultHostnameVerifier(new javax.net.ssl.HostnameVerifier(){
public boolean verify(String hostname,
SSLSession sslsession) {
return true;
}
});
8、发生api请求
通过 WebResource.Builder 提供的方法发生接口请求
f是请求的参数
ClientResponse cr = wb.post(ClientResponse.class,f);
cr = wb.get(ClientResponse.class);
return cr;
9、获取接口返回code
通过 ClientResponse.getStatus()
获取,返回 200 ,500这类
10、获取接口返回的信息体
通过 ClientResponse.getEntity(String.class);
获取
String res = cr.getEntity(String.class);
JSONObject.parseObject(res)
11、获取接口返回的信息头
通过 ClientResponse.getHeaders();
获取
MultivaluedMap<String,String> m = cr.getHeaders();
m.get("Set-Cookie")