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")
上一篇下一篇

猜你喜欢

热点阅读