zoukankan      html  css  js  c++  java
  • 项目总结38:使用httpcomponents: httpclient请求数据

    项目总结38:使用httpcomponents: httpclient请求数据

    Maven依赖

            <dependency>
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>httpclient</artifactId>
                <version>4.5.6</version>
            </dependency>

    代码示例

    package com.hzsun.shr.web.maintenance.util.http;
    
    /* *
     *@Description:
     *@Author:TYJ
     *@Date: create in  2019/10/29 14:56
     */
    
    import java.io.IOException;
    import java.util.Map;
    import java.util.Set;
    
    import org.apache.http.HttpEntity;
    import org.apache.http.client.ClientProtocolException;
    import org.apache.http.client.config.RequestConfig;
    import org.apache.http.client.methods.CloseableHttpResponse;
    import org.apache.http.client.methods.HttpPost;
    import org.apache.http.entity.StringEntity;
    import org.apache.http.impl.client.CloseableHttpClient;
    import org.apache.http.impl.client.HttpClients;
    import org.apache.http.util.EntityUtils;
    
    public class HttpClientImplTemp {
    
        /**
         *@Description 1-POST请求
         *@param  //blog:https://www.cnblogs.com/hhhshct/p/8523697.html
         *@return  java.lang.String
         *@author  TangYujie
         *@date  2019/10/29 15:34
         */
        public static String doPostWithHeaderAndJsonBody(String url, Map<String, Object> headerParamMap,String jsonBody) {
            CloseableHttpClient httpClient = null;
            CloseableHttpResponse httpResponse = null;
            String result = "";
            // 创建httpClient实例
            httpClient = HttpClients.createDefault();
            // 创建httpPost远程连接实例
            HttpPost httpPost = new HttpPost(url);
            // 配置请求参数实例
            RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(35000)// 设置连接主机服务超时时间
                    .setConnectionRequestTimeout(35000)// 设置连接请求超时时间
                    .setSocketTimeout(60000)// 设置读取数据连接超时时间
                    .build();
            // 为httpPost实例设置配置
            httpPost.setConfig(requestConfig);
            // 设置请求头
            //httpPost.addHeader("Content-Type", "application/x-www-form-urlencoded");
            httpPost.addHeader("Content-Type", "application/json");//根据实际情况设置
            Set<String> headerKeys = headerParamMap.keySet();
            for(String key : headerKeys){
                httpPost.addHeader(key,headerParamMap.get(key).toString());
            }
            // 封装body请求参数
            httpPost.setEntity(new StringEntity(jsonBody,"utf-8"));
            try {
                // httpClient对象执行post请求,并返回响应参数对象
                httpResponse = httpClient.execute(httpPost);
                // 从响应对象中获取响应内容
                HttpEntity entity = httpResponse.getEntity();
                result = EntityUtils.toString(entity);
                System.out.println("result:" + result);
            } catch (ClientProtocolException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                // 关闭资源
                if (null != httpResponse) {
                    try {
                        httpResponse.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                if (null != httpClient) {
                    try {
                        httpClient.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
            return result;
        }
    }
  • 相关阅读:
    Linux终端复用——tmux
    python中的global和nonlocal
    Pytorch中的错误和bug
    vue之Mutations 理解
    js 对象的合并(3种方法)转载
    json 数组
    vue-cli 安装时 npm 报错 errno -4048
    vue-cli 安装步骤(转载)
    安卓输入框调起键盘后输入框自动上浮
    jquery on 事件嵌套 事件执行多次
  • 原文地址:https://www.cnblogs.com/wobuchifanqie/p/11765006.html
Copyright © 2011-2022 走看看