Http请求-hutool工具类的使用

前言

在日常java后端开发的工作中经常会遇到后端发起HTTP请求的情况,这里可以使用一个简单的工具类。

官方网址:Http请求-HttpRequest (hutool.cn)

介绍

本质上,HttpUtil中的get和post工具方法都是HttpRequest对象的封装,因此如果想更加灵活操作Http请求,可以使用HttpRequest。

Http请求-HttpRequest的使用

普通表单

我们以POST请求为例:

        //链式构建请求String result2 = HttpRequest.post("www.baidu.com").header(Header.USER_AGENT, String.valueOf(ContentType.FORM_URLENCODED))//头信息,多个头信息多次调用此方法即可.form("paramMap")//表单内容.timeout(20000)//超时,毫秒.execute().body();Console.log(result2);

通过链式构建请求,我们可以很方便的指定Http头信息和表单信息,最后调用execute方法即可执行请求,返回HttpResponse对象。HttpResponse包含了服务器响应的一些信息,包括响应的内容和响应的头信息。通过调用body方法即可获取响应内容。

看到这里你可能就会有些疑问了,那这个==.header()==是什么呢? 里面的参数又是什么呢?该如何设置呢?别着急听我慢慢道来。

科普+学习

首先让我们到postman看看这些,下面就header的内容了,header顾名思义就是http的请求头。用于携带一些请求格式的定义信息。

再让我们看看==Header.USER_AGENT, String.valueOf(ContentType.FORM_URLENCODED)==都是什么吧?

Header源码:

ContentType源码:

通过hutool的源码我们可以看到,Header的本质就是一个枚举类,而我们只是拿其中已经定义好的枚举值而已,而这些枚举值就是,我们常用的一些http的请求头所需要的参数。到这里你应该也明白了,ContentType.FORM_URLENCODED就是我们所需要携带的http请求头参数的值,hutool这里也只是将它封装为一个枚举类方便调用罢了

Restful请求

String json = ...;
String result2 = HttpRequest.post(url).body(json).execute().body();

配置代理

如果代理无需账号密码,可以直接:

String result2 = HttpRequest.post(url).setHttpProxy("127.0.0.1", 9080).body(json).execute().body();

如果需要自定其他类型代理或更多的项目,可以:

String result2 = HttpRequest.post(url).setProxy(new Proxy(Proxy.Type.HTTP,new InetSocketAddress(host, port)).body(json).execute().body();

如果遇到https代理错误Proxy returns "HTTP/1.0 407 Proxy Authentication Required",可以尝试:

System.setProperty("jdk.http.auth.tunneling.disabledSchemes", "");
Authenticator.setDefault(new Authenticator() {@Overridepublic PasswordAuthentication getPasswordAuthentication() {return new PasswordAuthentication(authUser, authPassword.toCharArray());}}
);

其它自定义项

同样,我们通过HttpRequest可以很方便的做以下操作:

  • 指定请求头
  • 自定义Cookie(cookie方法)
  • 指定是否keepAlive(keepAlive方法)
  • 指定表单内容(form方法)
  • 指定请求内容,比如rest请求指定JSON请求体(body方法)
  • 超时设置(timeout方法)
  • 指定代理(setProxy方法)
  • 指定SSL协议(setSSLProtocol)
  • 简单验证(basicAuth方法)

Http响应-HttpResponse的使用

介绍

HttpResponse是HttpRequest执行execute()方法后返回的一个对象,我们可以通过此对象获取服务端返回的:

  • Http状态码(getStatus方法)
  • 返回内容编码(contentEncoding方法)
  • 是否Gzip内容(isGzip方法)
  • 返回内容(body、bodyBytes、bodyStream方法)
  • 响应头信息(header方法)

使用

此对象的使用非常简单,最常用的便是body方法,会返回字符串Http响应内容。如果想获取byte[]则调用bodyBytes即可。

获取响应状态码

HttpResponse res = HttpRequest.post(url)..execute();
Console.log(res.getStatus());

获取响应头信息

HttpResponse res = HttpRequest.post(url)..execute();
//预定义的头信息
Console.log(res.header(Header.CONTENT_ENCODING));
//自定义头信息
Console.log(res.header("Content-Disposition"));
st(url)..execute();
//预定义的头信息
Console.log(res.header(Header.CONTENT_ENCODING));
//自定义头信息
Console.log(res.header("Content-Disposition"));

Http请求-hutool工具类的使用相关推荐

  1. Java使用hutool工具类发送http请求

    Java使用hutool工具类发送网络请求 引入jar包 pom.xml添加以下hutool依赖 <dependency><groupId>cn.hutool</grou ...

  2. 数据对接利用hutool工具类进行xml解析,xml转换成map,然后进行数据入库

    数据对接xml解析 <ESBEntry><!--通过MB对请求进行权限验证,验证后将删除AccessControl节点 --><AccessControl>< ...

  3. 利用hutool工具类导出Excel

    简单介绍 可以使用hutool工具类,简单的生成Excel.本质上还是使用的POI组件,只是对其进行了封装,避免开发人员重复造轮子 hutool工具类链接 maven导入 <!-- hutool ...

  4. 前端请求接口post_程序员:HttpClient进行post请求的工具类,访问第三方接口HTTPS...

    HTTPS (英语:Hypertext Transfer Protocol Secure,缩写:HTTPS,常称为HTTP over TLS,HTTP over SSL或HTTP Secure) 是一 ...

  5. 使用hutool工具类,计算日期差

    需求: 参数: 计划日期,实际日期 返回: 超时or提前,天数 hutool工具类 <dependency><groupId>cn.hutool</groupId> ...

  6. java基于HuTool工具类ExcelWriter合并单元格

    ** java基于HuTool工具类ExcelWriter合并单元格 ** 1.基于HuTool工具类ExcelWriter合并单元格并且使用 jdk1.8 lambda表达式 效果如下: 用姓名和编 ...

  7. 用hutool工具类导出excel

    工作上有一个导出数据的需求,发现用hutool工具类可以非常简洁快捷的生成excel导出. 前期准备 引入hutool的依赖: <dependency><groupId>cn. ...

  8. hutool工具类生成二维码案例

    hutool工具类生成二维码案例 一.环境: 添加hutool工具类依赖,hutool生成二维码是利用Google的zixing,而且不是强依赖,所以还需引入zxing依赖 <dependenc ...

  9. 使用hutool工具类实现map和bean相互转换

    <!-- hutool 工具类 --><dependency><groupId>cn.hutool</groupId><artifactId> ...

最新文章

  1. Nature大调查显示 :全球1/4博士生想换导师
  2. Spring 配置JNDI(连接池)
  3. AVPlayer播放视频
  4. [转]深入理解linux内核list_head
  5. TCP/IP五层模型(五层因特网协议栈)||| OSI参考模型|||数据的封装与解封装
  6. 力扣题目——705. 设计哈希集合
  7. 关于移动开发的一些meta设置
  8. Kafka从上手到实践 - 庖丁解牛:Consumer | 凌云时刻
  9. 如何配置RadASM
  10. 4个老司机常用的黑科技资源网站
  11. MYSQL 经纬度 地理位置
  12. oeasy教您玩转vim - 39 - # 剪切粘贴
  13. 最最超级无敌的冷笑话,能把人噎死
  14. ARM TrustZone技术简介
  15. 低学历者已经月入万元是为什么
  16. 浙江大学计算机学院 金小刚,金小刚(浙江大学CADCG国家重点实验室教授)_百度百科...
  17. CentOS7 阻止笔记本合盖时休眠
  18. 利用JavaFX实现风险中性下股票价格的二叉树模型
  19. “TED演讲”可视化(应统期末作业)(二)
  20. Android 破解APK

热门文章

  1. E:\rabbit\rabbitmq_server-3.7.14\sbinrabbitmq-plugins enable rabbitmq_management 目录名称无效。 文件名、目录名或卷标
  2. 语音识别入门第三节:GMM以及EM算法(实战篇)
  3. 喝水也要喝出高逼格!这款智能保温杯,用它再也没烫过嘴~
  4. setf 使用方法
  5. wepy开发小程序eslint报错error 'getApp' is not defined no-undef
  6. 谷歌账号登录Google API Oauth 2.0简单申请和使用教程
  7. linux档案系统(filessystem)
  8. 湖南省教育装备行业协会五届二次会员大会暨五届三次常务理事会在长沙召开。
  9. codevs 2102
  10. MITE:欧拉欧拉欧拉欧拉(beta)