Android:如何覆盖特定API的改造超时
我有以下代码可以为项目中的所有API留出时间:
final OkHttpClient okHttpClient = new OkHttpClient.Builder()
.connectTimeout(30, TimeUnit.SECONDS)
.writeTimeout(30, TimeUnit.SECONDS)
.readTimeout(30, TimeUnit.SECONDS)
.build();
对于一个API,我想更改测试目的的时间,然后我实现了一个拦截器,并添加如下:
class CustomTimeOutInterceptor(private val context: Context) : Interceptor {
override fun intercept(chain: Interceptor.Chain): Response {
val request = chain.request()
val requestID = request.header("Reuest_Id")
if(requestID?.equals(RequestID.USER_TYPE) == true) {
val timeout = ConfigManager.getInstance(context)
chain.withReadTimeout(10, TimeUnit.MILLISECONDS)
.withWriteTimeout(10, TimeUnit.MILLISECONDS)
.withConnectTimeout(10, TimeUnit.MILLISECONDS)
}
return chain.proceed(request)
}
}
此后,我将interceptor添加了这样的interceptor :
final OkHttpClient okHttpClient = new OkHttpClient.Builder()
.connectTimeout(30, TimeUnit.SECONDS)
.writeTimeout(30, TimeUnit.SECONDS)
.readTimeout(30, TimeUnit.SECONDS)
.addInterceptor(CustomTimeOutInterceptor(context))
.build();
但这没有时间。我尝试删除客户端超时,但仍然无法使用。有任何解决方案吗???
I have the following code to set time out for all apis in my project :
final OkHttpClient okHttpClient = new OkHttpClient.Builder()
.connectTimeout(30, TimeUnit.SECONDS)
.writeTimeout(30, TimeUnit.SECONDS)
.readTimeout(30, TimeUnit.SECONDS)
.build();
For one of the api I want to change the time out for testing purpose, and I implemented one interceptor and added as below :
class CustomTimeOutInterceptor(private val context: Context) : Interceptor {
override fun intercept(chain: Interceptor.Chain): Response {
val request = chain.request()
val requestID = request.header("Reuest_Id")
if(requestID?.equals(RequestID.USER_TYPE) == true) {
val timeout = ConfigManager.getInstance(context)
chain.withReadTimeout(10, TimeUnit.MILLISECONDS)
.withWriteTimeout(10, TimeUnit.MILLISECONDS)
.withConnectTimeout(10, TimeUnit.MILLISECONDS)
}
return chain.proceed(request)
}
}
After this I am adding interceptor like this :
final OkHttpClient okHttpClient = new OkHttpClient.Builder()
.connectTimeout(30, TimeUnit.SECONDS)
.writeTimeout(30, TimeUnit.SECONDS)
.readTimeout(30, TimeUnit.SECONDS)
.addInterceptor(CustomTimeOutInterceptor(context))
.build();
but it is not getting time out. I tried removing client timeouts and still it did not work. Any solution ???
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如下
Add CustomTimeOutInterceptor Interceptor in your OkHttpClient object like below