修改 OkHttp3 的超时时间

修改 OkHttp3 的超时时间

一. 前言二. 导入mavengradle

三. 设置超时时间

一. 前言

OkHttp是一个处理网络请求的开源项目,是安卓端最火热的轻量级框架,由移动支付Square公司开发。OkHttp3是Java和Android都能用,Android还有一个著名网络库叫Volley,那个只有Android能用。

OkHttp 是一个默认高效的 HTTP 客户端:

HTTP/2 支持允许对同一主机的所有请求共享一个套接字。连接池减少了请求延迟(如果 HTTP/2 不可用)。透明 GZIP 可缩小下载大小。响应缓存完全避免网络重复请求。

使用 OkHttp 很容易。它的请求/响应 API 设计有流畅的构建器和不变性。它支持同步阻塞调用和带有回调的异步调用。

官方地址:https://square.github.io/okhttp

二. 导入

maven

com.squareup.okhttp3

okhttp

4.6.0

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

精品电视软件大全!创维电视最佳TVapp软件下载推荐
战国四大名将李牧的性格特点是什么 关于李牧的故事有哪些