修改 OkHttp3 的超时时间
·
一. 前言
OkHttp是一个处理网络请求的开源项目,是安卓端最火热的轻量级框架,由移动支付Square公司开发。OkHttp3是Java和Android都能用,Android还有一个著名网络库叫Volley,那个只有Android能用。
OkHttp 是一个默认高效的 HTTP 客户端:
- HTTP/2 支持允许对同一主机的所有请求共享一个套接字。
- 连接池减少了请求延迟(如果 HTTP/2 不可用)。
- 透明 GZIP 可缩小下载大小。
- 响应缓存完全避免网络重复请求。
使用 OkHttp 很容易。它的请求/响应 API 设计有流畅的构建器和不变性。它支持同步阻塞调用和带有回调的异步调用。
官方地址:https://square.github.io/okhttp
二. 导入
maven
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>4.6.0</version>
</dependency>
gradle
compile 'com.squareup.okhttp3:okhttp:4.6.0'
三. 设置超时时间
OkHttpClient 默认的 connectTimeout,readTimeout,writeTimeout 都是10
秒,实际在应用体验上来说,有点短的。
项目中最好 connectTimeout = 10s,readTimeout= 60s,writeTimeout = 60s,如果涉及到下载上传,实际应该修改成更长的。
在创建 OkHttpClient 客户端时设置超时时间:
OkHttpClient client = new OkHttpClient.Builder()
.connectTimeout(30, TimeUnit.SECONDS)//连接超时(单位:秒)
.readTimeout(60, TimeUnit.SECONDS)//读取超时(单位:秒)
.writeTimeout(60, TimeUnit.SECONDS)//写入超时(单位:秒)
.callTimeout(120, TimeUnit.SECONDS)//整个流程耗费的超时时间(单位:秒)--很少人使用
.pingInterval(5, TimeUnit.SECONDS)//websocket轮训间隔(单位:秒)
.build();
旧版本设置超时时间:
client .connectTimeout(15, TimeUnit.SECONDS)
.readTimeout(15,TimeUnit.SECONDS)
.writeTimeout(15,TimeUnit.SECONDS)
例:建立OkHttp 客户端并发送POST请求;
public Result executeSql(User loginUser, String sqlParam) {
client = new OkHttpClient.Builder()
.connectTimeout(20, TimeUnit.SECONDS)
.readTimeout(60,TimeUnit.SECONDS)
.build();
// 发起建立连接的请求
String url="http://localhost:11080/intelligentanalysis/sqlgateway/getConnection/";
RequestBody body=new FormBody.Builder()
.add("ip","10.0.47.23")
.add("port","2003")
.build();
String token="xxxxxxxx";
return post(url,body,token);
}
private String post(String url, RequestBody body,String token) {
try {
Request request = new Request.Builder()
.url(url)
.post(body)
.addHeader("smart_token",token)
.build();
Response response = client.newCall(request).execute();
String returnString = response.body().string();
logger.debug(returnString);
return returnString;
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
参考:
https://zhuanlan.zhihu.com/p/635599854
https://blog.csdn.net/weixin_46048515/article/details/120032790
更多推荐
已为社区贡献3条内容
所有评论(0)