2013-04-25 8 views
15

loopj AsyncHttpClient kitaplığını kullanırken, istekte bulunurken java.net.SocketTimeoutExceptions alıyorum (aşağıya bakın).loopj AsyncHttpClient kullanarak SocketTimeoutExceptions alma ... ayarlayabileceğim bir zaman aşımı değeri var mı?

Belirleyebileceğim bir zaman aşımı değeri var mı?

Not Not: Umarım diğer insanlar için biraz yardım sağlamak için bunu gönderiyorum. Ben (aptalca) bir süreliğine çözüm bulmak için uğraştım.

Yığın izleme:

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) 

cevap

37

keşfettim 10 saniyelik zaman aşımı AsyncHttpClient aslında varsayılan söyledi. İsteğiniz daha uzun sürerse, SocketTimeoutException öğesinin atılmış olduğunu görürsünüz.

Bunu ayarlamak gerçekten basittir. Sadece aşağıdakileri yapın:

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

Düzenleme : (! Teşekkürler, Horkavlna) Sen javadoc içinde yöntemin ayrıntılarını görebilirsiniz

-http://loopj.com/android-async-http/doc/com/loopj/android/http/AsyncHttpClient.html#setTimeout(int)

+1

milisaniye cinsinden zaman aşımı mı ? Bu konuda hiç bir doküman yok gibi görünüyor. – Manuel

+1

@ dragon112 Zaman aşımı milisaniyede. Yukarıdaki örnekte zaman aşımı 20 saniyeye ayarlıyorum. – loeschg

+1

JAVADOC http://loopj.com/android-async-http/doc/com/loopj/android/http/AsyncHttpClient.html#setTimeout(int) adresinde bulabilirsiniz – horkavlna