美文网首页
HttpClient 使用

HttpClient 使用

作者: BestFei | 来源:发表于2020-04-12 17:22 被阅读0次

    一、引入依赖包

    <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")
    

    相关文章

      网友评论

          本文标题:HttpClient 使用

          本文链接:https://www.haomeiwen.com/subject/dwkbmhtx.html