Httpclient调用第三方接口

  • Post author:
  • Post category:其他


什么是httpClient

HttpClient 是Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。


HttpClient的主要功能

1.实现了所有 HTTP 的方法(GET、POST、PUT、HEAD、DELETE、HEAD、OPTIONS 等)

2.支持 HTTPS 协议

3.支持代理服务器(Nginx等)等

4.支持自动(跳转)转向

导入依赖

        <!--CloseableHttpClient-->
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>4.5.5</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.47</version>
        </dependency>

GET请求

/**
     * 以get方式调用第三方接口
     * @param url
     * @return
     */
    public static String doGet(String url, String token){
        //创建HttpClient对象
        CloseableHttpClient httpClient = HttpClientBuilder.create().build();
        HttpGet get = new HttpGet(url);
 
        try {
            if (tokenString != null && !tokenString.equals("")){
                tokenString = getToken();
            }
            //api_gateway_auth_token自定义header头,用于token验证使用
            get.addHeader("api_gateway_auth_token", tokenString);
            get.addHeader("Content-Type", "application/json;charset=utf8");
            HttpResponse response = httpClient.execute(get);
            if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK){
                //返回json格式
                String res = EntityUtils.toString(response.getEntity());
                return res;
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

POST请求

/**
     * 以post方式调用第三方接口
     * @param url
     * @param json
     * @return
     */
    public static String doPost(String url, JSONObject json){
 
        try {
            if (httpClient == null){
                httpClient = HttpClientBuilder.create().build();
            }
 
            HttpPost post = new HttpPost(url);
 
            if (tokenString != null && !tokenString.equals("")){
                tokenString = getToken();
            }
 
            //api_gateway_auth_token自定义header头,用于token验证使用
            post.addHeader("api_gateway_auth_token", tokenString);
            post.addHeader("Content-Type", "application/json;charset=utf8");
 
            StringEntity s = new StringEntity(json.toString());
            s.setContentEncoding("UTF-8");
            //发送json数据需要设置contentType
            s.setContentType("application/x-www-form-urlencoded");
            //设置请求参数
            post.setEntity(s);
            HttpResponse response = httpClient.execute(post);
 
            if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK){
                //返回json格式
                String res = EntityUtils.toString(response.getEntity());
                return res;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            if (httpClient != null){
                try {
                    httpClient.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return null;
    }



版权声明:本文为winerpro原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。