<!-- https://mvnrepository.com/artifact/com.arronlong/httpclientutil -->
<dependency>
<groupId>com.arronlong</groupId>
<artifactId>httpclientutil</artifactId>
<version>1.0.4</version>
</dependency>

 简单Demo在test包里还有各种测试demo,各测试类的源码在src/test/java/com/httpclient/test包路径下。

 public static void main(String[] args) throws HttpProcessException, FileNotFoundException {
String url = "https://github.com/Arronlong/httpclientutil"; //最简单的使用:
String html = HttpClientUtil.get(HttpConfig.custom().url(url));
System.out.println(html); //---------------------------------
// 【详细说明】
//-------------------------------- //插件式配置Header(各种header信息、自定义header)
Header[] headers = HttpHeader.custom()
.userAgent("javacl")
.other("customer", "自定义")
.build(); //插件式配置生成HttpClient时所需参数(超时、连接池、ssl、重试)
HCB hcb = HCB.custom()
.timeout(1000) //超时
.pool(100, 10) //启用连接池,每个路由最大创建10个链接,总连接数限制为100个
.sslpv(SSLProtocolVersion.TLSv1_2) //设置ssl版本号,默认SSLv3,也可以调用sslpv("TLSv1.2")
.ssl() //https,支持自定义ssl证书路径和密码,ssl(String keyStorePath, String keyStorepass)
.retry(5) //重试5次
; HttpClient client = hcb.build(); Map<String, Object> map = new HashMap<String, Object>();
map.put("key1", "value1");
map.put("key2", "value2"); //插件式配置请求参数(网址、请求参数、编码、client)
HttpConfig config = HttpConfig.custom()
.headers(headers) //设置headers,不需要时则无需设置
.url(url) //设置请求的url
.map(map) //设置请求参数,没有则无需设置
.encoding("utf-8") //设置请求和返回编码,默认就是Charset.defaultCharset()
.client(client) //如果只是简单使用,无需设置,会自动获取默认的一个client对象
//.inenc("utf-8") //设置请求编码,如果请求返回一直,不需要再单独设置
//.inenc("utf-8") //设置返回编码,如果请求返回一直,不需要再单独设置
//.json("json字符串") //json方式请求的话,就不用设置map方法,当然二者可以共用。
//.context(HttpCookies.custom().getContext()) //设置cookie,用于完成携带cookie的操作
//.out(new FileOutputStream("保存地址")) //下载的话,设置这个方法,否则不要设置
//.files(new String[]{"d:/1.txt","d:/2.txt"}) //上传的话,传递文件路径,一般还需map配置,设置服务器保存路径
; //使用方式:
String result1 = HttpClientUtil.get(config); //get请求
String result2 = HttpClientUtil.post(config); //post请求
System.out.println(result1);
System.out.println(result2); //HttpClientUtil.down(config); //下载,需要调用config.out(fileOutputStream对象)
//HttpClientUtil.upload(config); //上传,需要调用config.files(文件路径数组) //如果指向看是否访问正常
//String result3 = HttpClientUtil.head(config); // 返回Http协议号+状态码
//int statusCode = HttpClientUtil.status(config);//返回状态码 //[新增方法]sendAndGetResp,可以返回原生的HttpResponse对象,
//同时返回常用的几类对象:result、header、StatusLine、StatusCode
HttpResult respResult = HttpClientUtil.sendAndGetResp(config);
System.out.println("返回结果:\n"+respResult.getResult());
System.out.println("返回resp-header:"+respResult.getRespHeaders());//可以遍历
System.out.println("返回具体resp-header:"+respResult.getHeaders("Date"));
System.out.println("返回StatusLine对象:"+respResult.getStatusLine());
System.out.println("返回StatusCode:"+respResult.getStatusCode());
System.out.println("返回HttpResponse对象)(可自行处理):"+respResult.getResp());
}

强大的httpClientUtils的更多相关文章

  1. Postman - 功能强大的 API 接口请求调试和管理工具

    Postman 是一款功能强大的的 Chrome 应用,可以便捷的调试接口.前端开发人员在开发或者调试 Web 程序的时候是需要一些方法来跟踪网页请求的,用户可以使用一些网络的监视工具比如著名的 Fi ...

  2. 纯JS打造比QQ空间更强大的图片浏览器-支持拖拽、缩放、过滤、缩略图等

    在线演示地址(打开网页后,点击商家图册): http://www.sport7.cn/cc/jiangnan/football5.html 先看一看效果图: 该图片浏览器实现的功能如下: 1. 鼠标滚 ...

  3. 你从未知道如此强大的ASP.NET MVC DefaultModelBinder

    看到很多ASP.NET MVC项目还在从request.querystring或者formContext里面获取数据,这实在是非常落后的做法.也有的项目建了大量的自定义的modelbinder,以为很 ...

  4. 虚拟机体验之 VirtualBox 篇 —— 性能强大的经典架构

    前两篇体验了 QEMU 和经过 KVM 加速的 QEMU,并体验了第三方虚拟机管理工具 virt-manager,让我们见识了开源社区的强大和开源虚拟机软件的高质量和高性能.这一篇,我来剖析一下 Vi ...

  5. transformjs污染了DOM?是你不了解它的强大

    原文链接: https://github.com/AlloyTeam/AlloyTouch/wiki/Powerful-transformjs 写在前面 上星期在React微信群里,有小伙伴觉得tra ...

  6. 强大的flash头像上传插件(支持旋转、拖拽、剪裁、生成缩略图等)

    今天介绍的这款flash上传头像功能非常强大,支持php,asp,jsp,asp.net 调用 头像剪裁,预览组件插件. 本组件需要安装Flash Player后才可使用,请从http://dl.pc ...

  7. 强大的支持多文件上传的jQuery文件上传插件Uploadify

    支持多文件上传的jQuery文件上传插件Uploadify,目前此插件有两种版本即Flash版本和HTML5版本,对于HTML5版本会比较好的支持手机浏览器,避免苹果手机Safari浏览器不支持Fla ...

  8. 一款强大的Android网络渗透软件dsploit

    dSploit是一款基于Android系统的功能十分全面强大的网络渗透工具,可以提供给网络安全工作人员检查网络的安全性.小黑这次主要使用了其中的"简易嗅探""会话劫持&q ...

  9. 5款强大的Java Web开发工具

    1.WebBuilder这是一款开源的可视化Web应用开发和运行平台.基于浏览器的集成开发环境,采用可视化的设计模式,支持控件的拖拽操作,能轻松完成前后台应用开发:高效.稳定和可扩展的特点,适合复杂企 ...

随机推荐

  1. LeetCode Array Easy 122. Best Time to Buy and Sell Stock II

    Description Say you have an array for which the ith element is the price of a given stock on day i. ...

  2. 使用WdatePicker时间插件简单的控制页面上两个时间选择的前后范围

    很多时候我们在一个交互的页面上需要显示两个时间让客户填写,比如开始时间&结束时间,顾名思义开始肯定不能大于结束,故使用WdatePicker插件选择时间的话可以很好的做好时间段的控制.看下面一 ...

  3. 前后台 工作切换---------------Linux 任务管理器(一)

    继续下一章... 发现了一个好东东.就是前后台的切换.例如我们现在要vim一个文件.然后又要查找一些命令的时候,以前不知道,都是退出后,查完了,在vim进入.现在我们可以将该vim拿到后台,然后查完了 ...

  4. favicon.ico引用

    <link rel="shortcut icon" href="favicon.ico" type="image/x-icon"> ...

  5. YIi2中checkboxOptions前选框的用法

    这是checkboxOptions前选框的用法 use yii\grid\GridView; $this->registerJs(" $('#selection_all').click ...

  6. 【LeetCode 17】电话号码的字母组合

    题目链接 [题解] 用回溯法搞一下. 一搞就有~ 注意输入空串的时候别返回那个空串.. [代码] class Solution { public: string dic[10]; vector< ...

  7. 【hihocoder 1554】最短的 Nore0061

    [链接]http://hihocoder.com/problemset/problem/1554 [题意] 中文题 [题解] DP; 设f[i][j][k]表示前i个字符,第一个串已经得到了前j个字符 ...

  8. (转)即时通讯IM OpenFire源码学习之三:在Eclipse中构建源码

    转:http://blog.csdn.net/huwenfeng_2011/article/details/43412617 源码搭建 下载地址: 地址:http://www.igniterealti ...

  9. D. Who killed Cock Robin--“今日头条杯”首届湖北省大学程序设计竞赛(网络同步赛)

    题目描述:链接点此 这套题的github地址(里面包含了数据,题解,现场排名):点此 题目描述 由于系统限制,C题无法在此评测,此题为现场赛的D题 Who killed Cock Robin? I, ...

  10. java发带图片正文和附件的邮件mail

    package com.mail; import java.io.UnsupportedEncodingException; import java.util.Date; import java.ut ...