Intereting Posts
Самый простой способ написать и прочитать XML Какую концепцию дизайна использовать для обновления пользовательского интерфейса async Получение версии ОС с NDK в C В чем смысл removeCallbacks (Runnable r) в Handler в Android Genymotion Android-эмулятор – доступ adb? Элементы выпадающего окна Android autocompletetextview имеют большой шрифт Rxandroid просит работать на нити ui, хотя он подписан на AndroidSchedulers.mainThread () Android In-App Billing v3: «Невозможно выполнить операцию: queryInventory» Получение мест из API Foursquare Как зарегистрировать некоторое пространство имен URL (myapp: //app.start/) для доступа к вашей программе, вызывая URL-адрес в браузере в ОС Android? Android Canvas drawLine WebView не работает, запуская URL-адрес извне в браузере. Отображение веб-страницы внутри приложения Список массивов Intent extra в Java Ссылки Android WebView на одно и то же окно с target = _blank, чтобы открыть новое окно Как использовать TabLayout с панелью инструментов внутри CollapsingToolbarLayout?

Как увеличить тайм-аут для запросов на модернизацию в роботизированном андроиде?

Я реализовал robospice в своем проекте и использовал модификацию для всех вызовов api. Для некоторых запросов мне нужно увеличить тайм-аут, пожалуйста, дайте мне знать, как я могу это сделать?

Фактически я использую сервис, который расширяет RetrofitGsonSpiceService. Код моего класса обслуживания приведен ниже:

Открытый класс MyService расширяет RetrofitGsonSpiceService {

@Override public void onCreate() { super.onCreate(); addRetrofitInterface(MyInterface.class); } @Override public CacheManager createCacheManager(Application application) throws CacheCreationException { CacheManager cacheManager = new CacheManager(); ObjectPersisterFactory persistFactory = new RetrofitObjectPersisterFactory(application, getConverter(), getCacheFolder()); persistFactory.setAsyncSaveEnabled(true); cacheManager.addPersister(persistFactory); return cacheManager; } @Override protected String getServerUrl() { return Utils.getBaseUrl(); } @Override protected RestAdapter.Builder createRestAdapterBuilder() { RestAdapter.Builder builder = new RestAdapter.Builder().setRequestInterceptor( new RequestInterceptor() { @Override public void intercept(RequestFacade request) { request.addHeader(Const.HEADER_DEVICE_TYPE_KEY, Const.HEADER_DEVICE_TYPE_VALUE); } } ); builder.setEndpoint(getServerUrl()).setConverter(getConverter()); return builder; } 

}

Solutions Collecting From Web of "Как увеличить тайм-аут для запросов на модернизацию в роботизированном андроиде?"

Я наткнулся на этот вопрос с подобным вопросом и в конце концов нашел ответ в другом месте. Если бы здесь был более полный пример, я бы сэкономил некоторое время, поэтому я вернулся к нему, чтобы опубликовать то, что сработало для меня на всякий случай, если это поможет другим:

Адаптер с увеличенным таймаутом чтения

  // create client OkHttpClient okHttpClient = new OkHttpClient(); okHttpClient.setReadTimeout(60 * 1000, TimeUnit.MILLISECONDS); // create rest adapter using the client above RestAdapter restAdapter = new RestAdapter.Builder() .setEndpoint(getBaseApiUrl()) .setClient(new OkClient(okHttpClient)) // this gson converter below is optional. We use it for parsing dates and enums .setConverter(new GsonConverter(createApiGson())) .setLogLevel(getRetrofitLogLevel()) .build(); 

ПРИМЕЧАНИЕ. Для нас getBaseApiUrl() возвращает что-то вроде: https://some.company.com/api/
И getRetrofitLogLevel() возвращает либо RestAdapter.LogLevel.FULL либо RestAdapter.LogLevel.NONE зависимости от того, какой вкус приложения создан.

Наконец, это основные зависимости, которые заставляют все работать:

Ключевые зависимости

 dependencies { ... compile "com.squareup.retrofit:retrofit:1.5.0" compile "com.squareup.retrofit:retrofit-mock:1.5.0" compile "com.squareup.okhttp:okhttp:1.5.4" compile "com.google.code.gson:gson:2.2.4" ... } 

В службе продления RetrofitSpiceService вам необходимо переопределить createRestAdapterBuilder() .

  @Override protected Builder createRestAdapterBuilder() { Builder builder = super.createRestAdapterBuilder(); builder.setClient(new CustomClient()); return builder; } 

CustomClient – это класс, который вам нужно написать самостоятельно, чтобы предоставить свои собственные тайм-ауты. Если вы используете OkHttp, посмотрите на OkClient по умолчанию: https://github.com/square/retrofit/blob/43b7ea14e5aca1d710deccb95b79484b03e99bb9/retrofit/src/main/java/retrofit/client/OkClient.java

Я не знаю о robospice, но с модификацией 2+ и okhttp3 + вы должны установить нового клиента, как это.

 OkHttpClient okHttpClient = new OkHttpClient(); Retrofit retrofit = new Retrofit.Builder() .baseUrl(Constantes.URL_DOMAIN) .addConverterFactory(GsonConverterFactory.create()) .client(okHttpClient.newBuilder().connectTimeout(Constantes.TIMEOUT, TimeUnit.SECONDS).readTimeout(Constantes.TIMEOUT, TimeUnit.SECONDS).writeTimeout(Constantes.TIMEOUT, TimeUnit.SECONDS).build()) .build(); 

Импортируйте это в свой модуль build.gradle:

 compile 'com.squareup.retrofit2:retrofit:2.0.0-beta3' compile 'com.squareup.retrofit2:converter-gson:2.0.0-beta3' compile 'com.squareup.okhttp3:okhttp:3.0.0-RC1'