代码
OkHttp使用build模式创建对象来的更简洁一些
依赖包上,如果HttpClient需要发送异步请求、实现文件上传,需要额外的引入异步请求依赖
<!---文件上传-->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpmime</artifactId>
<version>4.5.3</version>
</dependency>
<!--异步请求-->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpasyncclient</artifactId>
<version>4.5.3</version>
</dependency>
超时设置
HttpClient超时设置:
在HttpClient4.3+版本以上,超时设置通过RequestConfig进行设置
private CloseableHttpClient httpClient = HttpClientBuilder.create().build();
private RequestConfig requestConfig = RequestConfig.custom()
.setSocketTimeout(60 * 1000)
.setConnectTimeout(60 * 1000).build();
String api = "/user/v1/getUserInfo";
String url = String.format("%s%s", "localhost:18080", api);
HttpGet httpGet = new HttpGet(url);
httpGet.setConfig(requestConfig); //设置超时时间
超时时间是设置在请求类型HttpGet上,而不是HttpClient上
OkHttp超时设置:
直接在OkHttp上进行设置
private OkHttpClient client = new OkHttpClient.Builder()
.connectTimeout(60, TimeUnit.SECONDS)//设置连接超时时间
.readTimeout(60, TimeUnit.SECONDS)//设置读取超时时间
.build();
小结:
如果client是单例模式,HttpClient在设置超时方面来的更灵活,针对不同请求类型设置不同的超时时间,OkHttp一旦设置了超时时间,所有请求类型的超时时间也就确定
HttpClient和OkHttp性能比
client连接为单例:
单例模式下,HttpClient的响应速度要更快一些,单位为毫秒,性能差异相差不大
非单例模式下,OkHttp的性能更好,HttpClient创建连接比较耗时,因为多数情况下这些资源都会写成单例模式。
总结
OkHttp和HttpClient在性能和使用上不分伯仲,根据实际业务选择即可
作者:Lucie_xxm
链接:https://www.jianshu.com/p/30c531d9b125
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
OkHttp与HttpClient:性能对比与超时设置
本文对比了OkHttp和HttpClient在创建对象、异步请求、文件上传及超时设置方面的差异。OkHttp的构建方式更为简洁,而HttpClient在设置超时上更具灵活性,能针对不同请求设置不同超时。在性能方面,HttpClient在单例模式下响应速度稍快,但在非单例模式下,OkHttp表现更优。总结来说,两者在性能和使用上各有优势,可根据实际需求选择。
1064

被折叠的 条评论
为什么被折叠?



