Медленный ответ службы первой службы медленный - PullRequest
0 голосов
/ 24 апреля 2018

Я использую Retrofit 2. Проблема, с которой я сталкиваюсь, такова: первый ответ приходит с опозданием после истощения всего периода времени, указанного в connectTimeout. И после первого вызова все остальные вызовы веб-службы выполняются без затрат времени.

Кроме того, если я запускаю его в сети Wi-Fi, он работает без каких-либо проблем, т. Е. Запускается первая веб-служба и дает ответ без каких-либо проблем. Но если я запускаю его в сети Mobile / Device (Интернет, предоставляемый поставщиком услуг на мобильном устройстве), ответ снова доставляется после того, как он съел все время, указанное в connectTimeout.

Ниже приведен мой код класса модифицированного 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

https://stackoverflow.com/questions/46034047/the-response-from-the-retrofit-call-is-too-slow-and-it-returns-a-null-list?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa

Может ли кто-нибудь осветить проблему и найти решение для ее решения.

...