1

提供されている SyncClient を使用して接続を作成しようとしています

https://github.com/loopj/android-async-http

Web サービスに接続できません。次のログが表示されます。

12-05 19:54:45.397: W/System.err(3836): org.apache.http.client.ClientProtocolException
12-05 19:54:45.397: W/System.err(3836):     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:557)
12-05 19:54:45.397: W/System.err(3836):     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
12-05 19:54:45.397: W/System.err(3836):     at com.loopj.android.http.AsyncHttpRequest.makeRequest(AsyncHttpRequest.java:75)
12-05 19:54:45.397: W/System.err(3836):     at com.loopj.android.http.AsyncHttpRequest.makeRequestWithRetries(AsyncHttpRequest.java:94)
12-05 19:54:45.397: W/System.err(3836):     at com.loopj.android.http.AsyncHttpRequest.run(AsyncHttpRequest.java:56)
12-05 19:54:45.397: W/System.err(3836):     at com.loopj.android.http.SyncHttpClient.sendRequest(SyncHttpClient.java:66)
12-05 19:54:45.407: W/System.err(3836):     at com.loopj.android.http.AsyncHttpClient.get(AsyncHttpClient.java:340)
12-05 19:54:45.407: W/System.err(3836):     at com.loopj.android.http.AsyncHttpClient.get(AsyncHttpClient.java:329)
12-05 19:54:45.407: W/System.err(3836):     at net.connectedu.service.AlarmService.checkAppStatus(AlarmService.java:151)
12-05 19:54:45.407: W/System.err(3836):     at net.connectedu.service.AlarmService.doWakefulWork(AlarmService.java:146)
12-05 19:54:45.407: W/System.err(3836):     at com.commonsware.cwac.wakeful.WakefulIntentService.onHandleIntent(WakefulIntentService.java:108)
12-05 19:54:45.407: W/System.err(3836):     at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65)
12-05 19:54:45.418: W/System.err(3836):     at android.os.Handler.dispatchMessage(Handler.java:99)
12-05 19:54:45.418: W/System.err(3836):     at android.os.Looper.loop(Looper.java:137)
12-05 19:54:45.418: W/System.err(3836):     at android.os.HandlerThread.run(HandlerThread.java:60)
12-05 19:54:45.418: W/System.err(3836): Caused by: org.apache.http.client.CircularRedirectException: Circular redirect to 'https://localhost/api/get_logs/lalith/'
12-05 19:54:45.427: W/System.err(3836):     at org.apache.http.impl.client.DefaultRedirectHandler.getLocationURI(DefaultRedirectHandler.java:173)
12-05 19:54:45.427: W/System.err(3836):     at org.apache.http.impl.client.DefaultRequestDirector.handleResponse(DefaultRequestDirector.java:923)
12-05 19:54:45.437: W/System.err(3836):     at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:475)
12-05 19:54:45.437: W/System.err(3836):     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
12-05 19:54:45.437: W/System.err(3836):     ... 14 more

これにはどのような理由が考えられますか? loopj の同期ライブラリは正常に動作しますか?

4

2 に答える 2

0

loopj-android http lib で同期ライブラリを使用する方法を見つけました。以下は例です。アラームがトリガーされたときは初めて応答を得ることができますが、次にアラーム受信者がスケジュールされたときに上記のコードを取得します。いくつかの答えが見つかることを願っています:(

String content = ConnectionManager.getSyncClient.get("http://www.google.com");

次回リクエストが来ると、上記の例外が発生します。:(

ライブラリにエラーが見つかりました。循環リダイレクトは許可されていません。きっと、同じような悩みを抱えている人がいるはずです。この投稿が役に立ちました。

HttpClient 4.1.1 を使用して循環リダイレクトを回避する

于 2012-12-05T15:19:29.317 に答える
0

要求された URL が送信される前に、要求がプロキシに送信されていないことを確認してください。一部のモバイル サービス プロバイダーは、すべてのリクエストにコンテンツ アダプテーションまたはコンテンツ モーフィングを適用して、リクエストされたサイトがモバイル ビューに適合するようにしていることを発見しました。これは、リクエストがプロキシから適切にリダイレクトされていないことを意味します。モバイル デバイスのインターネット設定をチェックして、接続がプロキシ経由でリダイレクトされていないことを確認できます。

これは、ワイヤレスとネットワークの設定->モバイル ネットワーク->アクセス ポイント名-> 選択したインターネット項目の下にあります。

localhost を使用しているように見えるので、次のようにエラーを回避することもできます。

AsyncHttpClient クライアント = new AsyncHttpClient();
client.getHttpClient().getParams().setParameter(ClientPNames.ALLOW_CIRCULAR_REDIRECTS, true);

解析が必要な応答を受信し、解析例外が発生し、解析コードが正しいと仮定する場合は、要求されたものではなく、プロキシ サーバーから応答を受信して​​いることが原因である可能性が高くなります。

于 2014-01-16T07:36:58.127 に答える