OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder().url(url).build();
Response response = client.newCall(request).execute();
谢谢 .
10 回答
9
它现在改变了 . 用 .newBuilder() 替换 .Builder()
截至 okhttp:3.9.0 ,代码如下:
OkHttpClient okHttpClient = new OkHttpClient()
.newBuilder()
.connectTimeout(10,TimeUnit.SECONDS)
.writeTimeout(10,TimeUnit.SECONDS)
.readTimeout(30,TimeUnit.SECONDS)
.build();
114
像这样:
//New Request
HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
logging.setLevel(HttpLoggingInterceptor.Level.BASIC);
final OkHttpClient client = new OkHttpClient.Builder()
.addInterceptor(logging)
.connectTimeout(30, TimeUnit.SECONDS)
.readTimeout(30, TimeUnit.SECONDS)
.writeTimeout(30, TimeUnit.SECONDS)
.build();
4
对于Retrofit 2.0.0-beta1或beta2,代码如下
OkHttpClient client = new OkHttpClient();
client.setConnectTimeout(30, TimeUnit.SECONDS);
client.setReadTimeout(30, TimeUnit.SECONDS);
client.setWriteTimeout(30, TimeUnit.SECONDS);
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://api.yourapp.com/")
.addConverterFactory(GsonConverterFactory.create())
.client(client)
.build();
7
//add in gradle and sync
compile 'com.squareup.okhttp3:okhttp:3.2.0'
compile 'com.google.code.gson:gson:2.6.2'
import okhttp3.OkHttpClient;
import okhttp3.OkHttpClient.Builder;
Builder b = new Builder();
b.readTimeout(200, TimeUnit.MILLISECONDS);
b.writeTimeout(600, TimeUnit.MILLISECONDS);
// set other properties
OkHttpClient client = b.build();
OkHttpClient client = new OkHttpClient.Builder()
.connectTimeout(10, TimeUnit.SECONDS)
.readTimeout(10, TimeUnit.SECONDS)
.writeTimeout(10, TimeUnit.SECONDS)
.retryOnConnectionFailure(false) <-- not necessary but useful!
.build();
273
okhttp版本: 3.11.0 或更高版本
来自okhttp的源代码
/**
* Sets the default connect timeout for new connections. A value of 0 means no timeout,
* otherwise values must be between 1 and {@link Integer#MAX_VALUE} when converted to
* milliseconds.
*
* <p>The connectTimeout is applied when connecting a TCP socket to the target host.
* The default value is 10 seconds.
*/
public Builder connectTimeout(long timeout, TimeUnit unit) {
connectTimeout = checkDuration("timeout", timeout, unit);
return this;
}
10 回答
它现在改变了 . 用
.newBuilder()
替换.Builder()
截至 okhttp:3.9.0 ,代码如下:
像这样:
对于Retrofit 2.0.0-beta1或beta2,代码如下
你只需要这样做
请注意,
setReadTimeout
中设置的值是OkHttp
Connection类内部Socket
上的setSoTimeout
中使用的值 .不在
OkHttpClient
上设置任何超时相当于在setConnectTimeout
或setReadTimeout
上设置0
的值,并且根本不会导致超时 . 描述可以找到here .正如@marceloquinta在评论中提到的
setWriteTimeout
也可以设置 .从版本2.5.0开始,默认情况下,如@ChristerNordvik所述,读/写/连接超时值设置为10秒 . 这可以看作here .
从OkHttp3开始,现在可以通过Builder这样做
你也可以查看食谱here
对于okhttp3,这已经改变了一点 .
现在您使用构建器设置时间,而不是设置器,如下所示:
更多信息可以在他们的维基中找到:https://github.com/square/okhttp/wiki/Recipes#timeouts
对于Retrofit改造:2.0.0-beta4,代码如下
这对我有用...来自https://github.com/square/okhttp/issues/3553
okhttp版本:
3.11.0
或更高版本来自okhttp的源代码
unit
可以是以下任何值示例代码
更新
我从版本
3.12.0
向okhttp添加了新的api,你可以像这样设置超时:NOTE: 这需要API 26,因此如果您支持旧版Android,请继续使用
(5, TimeUnit.SECONDS)
.如果要自定义配置,请先使用以下方法创建OKhttpclient,然后在其上添加构建器 .