1

Loopj Async HTTP ライブラリで奇妙な問題が発生しています。GET や POST を使用して応答を取得することもあれば、応答が長時間にわたって返されることもあれば、応答がまったく返されないこともあります。これは、wifi を使用している場合にのみ発生します。私は非常に多くのプロジェクトで loopj を使用してきましたが、それらは wifi では問題なく動作しますが、このプロジェクトでは動作しません。モバイルデータ 3G 接続を使用すると、常に応答が返ってきます。onFaliure メソッドをオーバーライドしましたが、これはサーバーからの応答がない場合に得られるものです。

E/statusCode(31980): 0
E/headers(31980): null
E/Throwable(31980): org.apache.http.conn.ConnectTimeoutException: Connect to .. timed out
E/errorResponse(31980): null

例外も logcat に出力されます。

04-16 10:58:18.795: W/System.err(31980): org.apache.http.conn.ConnectTimeoutException: Connect to .. timed out
04-16 10:58:18.795: W/System.err(31980):    at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:121)
04-16 10:58:18.795: W/System.err(31980):    at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:144)
04-16 10:58:18.795: W/System.err(31980):    at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
04-16 10:58:18.795: W/System.err(31980):    at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
04-16 10:58:18.795: W/System.err(31980):    at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
04-16 10:58:18.795: W/System.err(31980):    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:670)
04-16 10:58:18.800: W/System.err(31980):    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:509)
04-16 10:58:18.800: W/System.err(31980):    at com.loopj.android.http.AsyncHttpRequest.makeRequest(AsyncHttpRequest.java:74)
04-16 10:58:18.800: W/System.err(31980):    at com.loopj.android.http.AsyncHttpRequest.makeRequestWithRetries(AsyncHttpRequest.java:91)
04-16 10:58:18.800: W/System.err(31980):    at com.loopj.android.http.AsyncHttpRequest.run(AsyncHttpRequest.java:54)
04-16 10:58:18.800: W/System.err(31980):    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:390)
04-16 10:58:18.800: W/System.err(31980):    at java.util.concurrent.FutureTask.run(FutureTask.java:234)
04-16 10:58:18.800: W/System.err(31980):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
04-16 10:58:18.800: W/System.err(31980):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
04-16 10:58:18.800: W/System.err(31980):    at java.lang.Thread.run(Thread.java:841)
04-16 10:58:18.800: V/JsonHttpResponseHandler(31980): response body is null, calling onFailure(Throwable, JSONObject)

解決策を示していただければ幸いです。

4

3 に答える 3

1

1 年以上経った今でも、このエラーは時々表示され続けます。スタックトレースが言っているにもかかわらず、非常に興味深いことに

「応答本文が null です。onFailure(Throwable, JSONObject) を呼び出しています」

実際に呼び出されるメソッドはonFailure(statusCode, headers, throwable, (JSONObject) null);

これは、行 231 JsonHttpResponseHandler.javaによると、次のシグネチャを持つメソッドがオーバーライドされることを示唆しています。

public void onFailure(int statusCode, Header[] headers, Throwable throwable, JSONObject errorResponse)
于 2015-08-26T17:39:32.010 に答える