Intereting Posts
ListView и скрытый идентификатор. Как это возможно? Создание пользовательской раскладки клавиатуры для Android Gradle пропускает задачу X, поскольку у нее нет исходных файлов Как установить значок Font Awseome на плавающей кнопке Action? Оказание в cocos2d-x с использованием значений из математической функции Android ffmpeg .so загрузить Ошибка: Android-XML: размещение <WebView> в родительском элементе, который использует размер wrap_content, может привести к тонким ошибкам; Использовать match_parent К сожалению приложение прекратилось Ящик навигации с левой и правой сторон в одном действии ParseFacebookUtils Android auth_type: 'reauthenticate' Формат ImageReader переопределяется на некоторых устройствах Куда поместить собственный файл свойств в проект андроида, созданный с помощью Android Studio? Распознавание активности Api Не работает на некоторых устройствах Java.lang.IllegalStateException: вызов методов просмотра в другом потоке, кроме потока пользовательского интерфейса Почему FirebaseRemoteConfig.fetch не вызывает обратный вызов?

Получение SocketTimeoutExceptions с использованием loopj AsyncHttpClient … есть ли значение тайм-аута, которое я могу установить?

При использовании библиотеки loopj AsyncHttpClient я продолжаю получать java.net.SocketTimeoutExceptions при выполнении запросов (см. Ниже).

Есть ли значение тайм-аута, которое я могу установить?

Примечание . Я размещаю это, чтобы надеяться на помощь другим людям. Я (глупо) изо всех сил пытался найти решение в течение некоторого времени.

Трассировки стека:

java.net.SocketTimeoutException at java.net.PlainSocketImpl.read(PlainSocketImpl.java:491) at java.net.PlainSocketImpl.access$000(PlainSocketImpl.java:46) at java.net.PlainSocketImpl$PlainSocketInputStream.read(PlainSocketImpl.java:240) at org.apache.http.impl.io.AbstractSessionInputBuffer.fillBuffer(AbstractSessionInputBuffer.java:103) at org.apache.http.impl.io.AbstractSessionInputBuffer.readLine(AbstractSessionInputBuffer.java:191) at org.apache.http.impl.conn.DefaultResponseParser.parseHead(DefaultResponseParser.java:82) at org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:174) at org.apache.http.impl.AbstractHttpClientConnection.receiveResponseHeader(AbstractHttpClientConnection.java:180) at org.apache.http.impl.conn.DefaultClientConnection.receiveResponseHeader(DefaultClientConnection.java:235) at org.apache.http.impl.conn.AbstractClientConnAdapter.receiveResponseHeader(AbstractClientConnAdapter.java:259) at org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:279) at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:121) at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:428) at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555) at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487) at com.loopj.android.http.AsyncHttpRequest.makeRequest(AsyncHttpRequest.java:76) at com.loopj.android.http.AsyncHttpRequest.makeRequestWithRetries(AsyncHttpRequest.java:95) at com.loopj.android.http.AsyncHttpRequest.run(AsyncHttpRequest.java:57) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:390) at java.util.concurrent.FutureTask.run(FutureTask.java:234) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) at java.lang.Thread.run(Thread.java:856) 

Я обнаружил, что AsyncHttpClient фактически по умолчанию имеет 10-секундный тайм-аут. Если ваш запрос занимает больше времени, вы увидите брошенное SocketTimeoutException.

Это очень просто. Просто выполните следующие действия:

 final int DEFAULT_TIMEOUT = 20 * 1000; AsyncHttpClient aClient = new AsyncHttpClient(); aClient.setTimeout(DEFAULT_TIMEOUT); //... continue as normal 

Редактировать : (спасибо, Хоркавна!)

Вы можете увидеть подробности метода в javadoc – http://loopj.com/android-async-http/doc/com/loopj/android/http/AsyncHttpClient.html#setTimeout(int)