unirest java是一款非常好用的HTTP请求库。快速配置HTTP请求就来unirest java。在设计Web程序或本地程序时,可能需要配置HTTP请求。使用此软件可以快速部署请求计划。该软件可以配置GET,POST,PUT,PATCH,DELETE,HEAD,OPTIONS和其他类型的请求。提供了一种简单的即时内存响应缓存机制,其中包括一些用于项目过期的选项,您可以使用默认值expiration选项将其启用,或者用户可以提供自己选择的缓存支持的自定义缓存,建议在高负载系统中,使用者使用专用的缓存实现(例如EHCache或Guava)来支持缓存。如果您需要简化的轻量级HTTP客户端库,则可以下载Java Unirest!
官方教程:
使用Maven安装:
要求
因此,您可能想知道使用Unirest如何使使用Java创建请求更容易。这是一个基本的POST请求,它将解释所有内容:
调用as [Type]()请求时,可能的类型包括Json,String,Object Empty和File。
路线参数
有时想向URL添加动态参数。您可以通过在URL中添加一个占位符,然后使用routeParam函数设置路由参数来轻松实现此目的,例如:
占位符{fruit}将被替换为apple。
占位符的格式就像括号一样简单:{custom_name}
所有数值都将为您进行URL编码
默认基本URL
您可以为所有不包含完整URL的请求配置默认基本URL。
此配置将导致GET进入“ http://homestar.com/runner”
查询参数
可以一一创建查询字符串参数
同样,所有参数值都将被URL编码。
您还可以将查询字符串作为数组和映射传递:
标头
标头方法可用于添加请求标头。
基本认证
在需要时,Unirest公开了执行基本身份验证的快捷方式。 Unirest处理Base64编码部分。请确保您始终通过HTTPS执行此操作!
实体组织
您可以轻松发布实体ob
作为整个身体。这是大多数REST服务的默认行为。
除非另行指定,否则默认的Content-Type值为text / plain;字符集= UTF-8
您还可以使用配置的ObjectMapper发布为序列化的对象。 (有关实现的详细信息,请参阅对象映射器。Unirest带有默认映射器,它将使用流行的Google Gson库序列化为json。
对象映射器
Unirest根据流行的JSON库(Jackson和GSON)提供了一些不同的Object Mappers。这些可以作为传统或带阴影的罐子包括在内:
对象或JSON解析错误
您不能总是得到想要的东西。有时,您从Web服务获得的结果不会映射到您期望的结果。当asObject或asJson请求发生这种情况时,结果主体将为null,但是响应对象将包含ParsingException,该异常使您可以获取错误和原始主体进行检查。
映射错误的对象
有时,当使用REST API时,服务将返回一个可以解析的错误对象。您可以选择将其映射到POJO等
在没有对象映射器的情况下将一种身体类型映射到另一种
如果您不想提供完整的ObjectMapper实施,则可以使用一个简单的函数来映射响应
常见问题:
升级到Unirest 3.0
Unirest 3的主要区别在于,使用Google Gson作为引擎的org.json接口的无尘室实现取代了org.json依赖项。
什么?为什么?
是由于与org.json许可发生冲突,该许可要求“该软件用于善良而非恶意”。尽管许多人正确地认为这是愚蠢的并且不能通过法律强制执行,但是诸如Eclipse,Debian和Apache之类的许多组织不允许使用它。
为什么不切换到org.json的Google实现?
几个原因:
它已经维护了好几年了,并且不再与org.json签名匹配。
这可能会导致许多项目禁止的类路径冲突。
我们希望Unirest可以扩展到org.json之外,并提供更多高级本机功能,例如对象映射。
为什么是Gson而不是Jackson?
Gson在精神和方法签名方面最接近org.json,因此被认为采用起来更快。
它很小,很成熟并且只有一个依赖项。
与其他项目相比,杰克逊的冲突要少得多,杰克逊既受欢迎又更复杂。
怎么做?
无需查看org.json类内部即可完成实现。这是通过编写大量的单元测试来记录行为和方法签名,然后简单地更改测试以使用项目自己的类和Google Gson来实现的。
软件功能:
自定义Apache客户端
Unirest在后台使用Apache Http Client。这不是永久性要求。 Unirest的未来版本可能会用其他东西替代Apache。
自定义缓存
您还可以通过实现缓存接口来提供自定义缓存
错误处理
HttpResponse对象具有一些处理程序方法,可以将它们链接在一起以处理成功和失败
JSON回应
当您不需要完整的Object Mapper时,Unirest提供了一种轻量级的JSON响应类型。
档案回应
有时,您只想下载文件,或将响应主体捕获到文件中。 Unirest可以同时做到这一点。只需告诉Unirest您要将文件放在哪里即可。
下载进度监控
如果要上传大文件,则可能需要向用户提供一些时间进度条。您可以通过提供ProgresMonitor来监视此进度
客户证书
如果需要使用自定义客户端证书来调用服务,则可以为unirest提供一个自定义密钥库。您可以传递KeyStore对象或有效的PKCS#12密钥库文件的路径
分页请求
有时,服务将提供寻呼请求。这样做的方法尚未标准化,但是Unirest已经证明了一种跟踪页面直到所有页面用完的机制。您必须提供两个函数来提取下一页。第一个是获取所需格式的HttpResponse,第二个是接下来从响应中提取链接。结果是PagedList的HttpResponse。
软件特色:
1.允许用户将自定义SSLContext注入Config以确保安全性
2.一个自定义拦截器,允许在以下情况下调用
在要求之前
根据要求
发生致命的连接错误时。
3.用与org.json接口匹配的gson支持的本地kong.unirest库替换对org.json的依赖
4.添加一个新的返回类型:(asBytes()和异步版本)将返回原始的byte []数组
5.引入新的HttpStatus常量类以引用Http响应代码。
6.切换ApacheClient以使用Apache的逐出监视器而不是自定义监视器。
7.将对各种Java DateTime类型的本机默认支持添加到内置对象映射器中。所有类型都将序列化为ISO-8601。 json解析会尝试各种ISO变体。
支持的类型:
ZonedDateTime
LocalDateTime
当地日期
日历
日期