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 回答