我正在使用Retrofit 2.我面临的问题是:在吃掉connectTimeout
中提到的所有时间段之后,第一个回应是迟到了。在第一次调用之后,所有其他Web服务调用都没有时间运行。
此外,如果我在Wifi网络上运行它没有任何问题,即第一个Web服务运行并给出响应而不会给出任何问题。但是如果我在移动/设备网(在移动设备上由服务提供商提供的互联网)上运行它,则在connectTimeout
中提到的所有时间吃完后再次响应。
以下是我的Retrofit API类代码: -
public class APIClient {
private static Retrofit retrofit = null;
public static Retrofit getClient() {
if (retrofit == null) {
OkHttpClient.Builder httpClient = new OkHttpClient.Builder();
httpClient.addInterceptor(new Interceptor() {
@Override
public Response intercept(Interceptor.Chain chain) throws IOException {
Request originalRequest = chain.request();
Request request = originalRequest.newBuilder()
.header(Constants.KeyConstants.HEADER_AUTH, Constants.ConstantKeyTag.HEADER_AUTH_VALUE)
.header(Constants.KeyConstants.HEADER_CONTENT_TYPE, Constants.ValuesConstant.HEADER_CONTENT_TYPE_VALUE)
.method(originalRequest.method(), originalRequest.body())
.build();
return chain.proceed(request);
}
});
Gson gson = new GsonBuilder()
.setLenient()
.create();
retrofit = new Retrofit.Builder()
.baseUrl(Constants.AppSpecificConstants.WS_BASEURL)
.addConverterFactory(GsonConverterFactory.create(gson))
.client(okHttpClient)
.build();
}
return retrofit;
}
final static OkHttpClient okHttpClient = new OkHttpClient.Builder()
.connectTimeout(60, TimeUnit.SECONDS)
.readTimeout(60, TimeUnit.SECONDS)
.build();
}
我参考了以下链接,但没有找到任何帮助:
https://github.com/square/retrofit/issues/1489
https://stackoverflow.com/questions/39915469/retrofit-2-delayed-response
任何人都可以对问题和任何解决方案提出解决方案。