/**
     * 实例化HttpClient
     * maxTotal  最大连接数
     * maxPerRoute  最大并发量
     * socketTimeout  从服务器读取数据超时时间
     * connectTimeout  和服务器建立连接超时时间
     * connectionRequestTimeout  从连接池获取连接的超时时间
     * @return
     */
    public static HttpClient createHttpClient(int maxTotal, int maxPerRoute, int socketTimeout, int connectTimeout,
                    int connectionRequestTimeout) {
        RequestConfig defaultRequestConfig = RequestConfig.custom().setSocketTimeout(socketTimeout)
                        .setConnectTimeout(connectTimeout).setConnectionRequestTimeout(connectionRequestTimeout).build();
        PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager();
        //设置整个连接池最大连接数 根据自己的场景决定
        cm.setMaxTotal(maxTotal);
        //这个是控制并发量的
        cm.setDefaultMaxPerRoute(maxPerRoute);
        CloseableHttpClient httpClient = HttpClients.custom().setConnectionManager(cm)
                        .setDefaultRequestConfig(defaultRequestConfig).build();
        return httpClient;

}

这里的参数根据自己的实际情况来设定,这种调用一般都是外部调用,考虑到双方协调性问题最好并发量不要设置特别大,调用不要特别频繁,最好每天控制调用数量。

public static String sendPostForCaice(HttpClient httpClient, String url, Map<String, String> params, Charset encoding) {
        String resp = "";
        HttpPost httpPost = new HttpPost(url);
        httpPost.addHeader(HTTP.CONTENT_TYPE, "application/json; charset=utf-8"); 
        if (params != null && params.size() > 0) {
            StringEntity se = new StringEntity(JsonUtil.toJson(params), encoding);
            httpPost.setEntity(se);
        }
        CloseableHttpResponse response = null;
        try {
            response = (CloseableHttpResponse) httpClient.execute(httpPost);
            if(response!=null && 200 == response.getStatusLine().getStatusCode()){
            resp = EntityUtils.toString(response.getEntity(), encoding);
        }
        } catch (Exception e) {
            log.error(e.getMessage(), e);
        } finally {
            if (response != null) {
                try {
                    response.close();
                } catch (IOException e) {
                    log.error(e.getMessage(), e);
                }
            }
        }
        return resp;
    }

该方法用于发送post请求,JsonUtil.toJson(params)作用是把map转换为json类型的String字符串,最后发送请求,得到返回结果

httpPost.addHeader(HTTP.CONTENT_TYPE, "application/json; charset=utf-8"); 这个头部信息是根据双方约定来设置。

public static String sendPut(HttpClient httpClient, String url,String authorization,Map<String, String> params,Charset encoding){
    HttpPut httpPut = new HttpPut(url);
    //header存放 LPCC_TOKEN 
        httpPut.addHeader(Const.AUTHORIZATION,"jwt "+authorization);
        httpPut.addHeader(HTTP.CONTENT_TYPE, "application/json; charset=utf-8"); 
        if (params != null && params.size() > 0) {
            StringEntity se = new StringEntity(JsonUtil.toJson(params), encoding);
            httpPut.setEntity(se);
        }
        HttpResponse httpResponse = null;
        String res =  null;
        try {
        httpResponse = httpClient.execute(httpPut);
        if(httpResponse!=null && 200 == httpResponse.getStatusLine().getStatusCode()){
    res =  EntityUtils.toString(httpResponse.getEntity(), encoding);
        }
} catch (ClientProtocolException e) {
log.error(e.getMessage(), e);
} catch (IOException e) {
log.error(e.getMessage(), e);
}
return res;
    }

该方法是发送put请求,代码基本和post请求没什么区别。

这里再说一下如果要发送get请求,基本代码也是这样,只是get请求不需要设置请求参数的StringEntity,参数都追加到url后面。

HttpClient发送put与post请求代码实例与解析相关推荐

  1. httpsrequest java_java 发送http和https请求的实例

    HTTP请求: 如果需要Json格式的自己转下,度娘上N种姿势- //处理http请求 requestUrl为请求地址 requestMethod请求方式,值为"GET"或&quo ...

  2. 前端发送http的get请求 - 代码篇

    前端html发送http GET请求(含案例 .含代码) 资料文献地址: 资料文献 . jQuery.get().jQuery.post() 分类:快捷方法 案例 · 代码: <!DOCTYPE ...

  3. Java实现HttpClient发送GET、POST请求(https、http)

    原文链接:https://www.cnblogs.com/klslb/p/9121276.html 1.maven <dependency><groupId>org.apach ...

  4. HttpClient 发送 HTTP、HTTPS 请求的简单封装

    序 近期这几周.一直在忙同一个项目.刚開始是了解需求.需求有一定了解之后,就開始调第三方的接口.因为第三方给提供的文档非常模糊,在调接口的时候,出了非常多问题,一直在沟通协调,详细的无奈就不说了,因为 ...

  5. Android使用Apache HttpClient发送GET、POST请求

    2019独角兽企业重金招聘Python工程师标准>>> 简单的网页下载,HttpURLConnection可以完成,但是涉及到用户登录等权限相关问题,就需要涉及Session.Coo ...

  6. HttpClient发送POST和GET请求

    1.使用HttpClient添加的maven依赖(尽量版本平齐或者比我的高,低的可能会出现找不到类的情况) <dependency><groupId>org.apache.ht ...

  7. Ionic+Angular+Express实现前后端交互使用HttpClient发送get请求数据并加载显示(附代码下载)

    场景 Ionic介绍以及搭建环境.新建和运行项目: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/106308166 在上面搭建起 ...

  8. postman发送object_.NetCore HttpClient发送请求的时候为什么自动带上了一个RequestId头部...

    奇怪的问题 最近在公司有个系统需要调用第三方的一个webservice.本来调用一个下很简单的事情,使用HttpClient构造一个SOAP请求发送出去拿到XML解析就是了. 可奇怪的是我们的请求在运 ...

  9. .NetCore HttpClient发送请求的时候为什么自动带上了一个RequestId头部?

    奇怪的问题 最近在公司有个系统需要调用第三方的一个webservice.本来调用一个下很简单的事情,使用HttpClient构造一个SOAP请求发送出去拿到XML解析就是了.可奇怪的是我们的请求在运行 ...

最新文章

  1. 机器学习中的偏差和方差是什么?
  2. ASP.NET AJAX 1.0 发布
  3. eclipse中编辑properties文件无法看到中文
  4. 涡流探伤仪计算机软件,册亨通过式涡流探伤仪涡流探伤仪保养
  5. 大数据WEB阶段 后台和页面之间传递日期格式数据的400问题
  6. Expression Blend 定义RadioButton行为动画
  7. 一键对频对讲机好吗_对讲机的基础知识你都知道多少呢?
  8. 这么香的技术还不快点学起来,含BATJM大厂
  9. win10子系统linux编译ffmpeg
  10. JavaScript实现封闭区域布尔运算
  11. android P版本ro.build.date时间修改
  12. 《BI那点儿事》数据流转换——透视
  13. ce修改面板属性_脑叶公司员工属性CE修改教程
  14. 随机数生成器python_Python中的随机数生成器
  15. Android音量设置流程干货版
  16. zookeeper 与dubbo管理平台Window 安装与使用
  17. PHP连接MySQL查询结果中文显示乱码问题
  18. 计算机辅助园林设计ps,《CAD PS辅助园林设计》课程教学大纲.doc
  19. 使用腾讯位置服务 JavaScript API GL 打造自己的 3D 地图
  20. [note] 电磁场和微波课组(一)——电磁学(电学部分)

热门文章

  1. SQL limit用法
  2. mysql脑裂_keepalived的脑裂问题
  3. cas 4.1.5 添加验证码 亲测成功
  4. java中System.Properties的用法
  5. iReport3.0.0属性说明
  6. 基于java‘网上宠物店计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署
  7. XSLFormatter应对大部头出版物的排版软件
  8. 大数据Flink(四十五):​​​​​​扩展阅读 双流Join
  9. 《软件工程教程》(第2版) 主编:吴迪 马宏茹 丁万宁 第六章课后习题参考答案
  10. 关于人工智能不会使大脑变懒惰的议论文_家长学校 | 家长进课堂,带“变”入校园...