【发布时间】:2013-12-29 13:24:20
【问题描述】:
我正在使用 Android 异步 http 发送一个发布请求,但似乎响应为空。我认为这是因为 AsyncHttpResponseHandler 的 onSuccess 没有被调用。这是我的发帖请求:
final String response[] = new String[1];
PersistentCookieStore myCookieStore = new PersistentCookieStore(act);
client.setCookieStore(myCookieStore);
RequestParams params = new RequestParams();
params.put("user_id", username);
params.put("password", password);
//other params
client.post(url, params, new AsyncHttpResponseHandler() {
@Override
public void onSuccess(int res, Header[] headers, byte[] body ) {
//Logs don't get called
Log.i("test", ""+res);
Log.i("test", new String(body));
response[0] = ""+ res;
response[1] = new String(body);
}
});
return response;
编辑: 添加 onFailure 并打印堆栈后,我得到了这个:
org.apache.http.client.HttpResponseException: Internal Server Error
12-29 13:42:12.450 2359-2386/com.sblive.aufschoolbliz W/System.err﹕ at com.loopj.android.http.AsyncHttpResponseHandler.sendResponseMessage(AsyncHttpResponseHandler.java:440)
12-29 13:42:12.450 2359-2386/com.sblive.aufschoolbliz W/System.err﹕ at com.loopj.android.http.AsyncHttpRequest.makeRequest(AsyncHttpRequest.java:78)
12-29 13:42:12.454 2359-2386/com.sblive.aufschoolbliz W/System.err﹕ at com.loopj.android.http.AsyncHttpRequest.makeRequestWithRetries(AsyncHttpRequest.java:91)
12-29 13:42:12.454 2359-2386/com.sblive.aufschoolbliz W/System.err﹕ at com.loopj.android.http.AsyncHttpRequest.run(AsyncHttpRequest.java:54)
12-29 13:42:12.458 2359-2386/com.sblive.aufschoolbliz W/System.err﹕ at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:390)
12-29 13:42:12.458 2359-2386/com.sblive.aufschoolbliz W/System.err﹕ at java.util.concurrent.FutureTask.run(FutureTask.java:234)
12-29 13:42:12.458 2359-2386/com.sblive.aufschoolbliz W/System.err﹕ at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
12-29 13:42:12.462 2359-2386/com.sblive.aufschoolbliz W/System.err﹕ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
12-29 13:42:12.462 2359-2386/com.sblive.aufschoolbliz W/System.err﹕ at java.lang.Thread.run(Thread.java:841)
【问题讨论】:
-
Internal Server Error 通常是指服务器端的错误。这可能是因为您发送了无效请求,但仍应在服务器端对其进行诊断。此外,您的函数在准备好之前返回
response(并且onSuccess()回调正在覆盖超出响应数组的范围)。 -
是的,我在修复错误后得到了一个超出范围的数组。但是我的响应不是可以容纳 2 个元素吗?
-
new String[1]只为一个元素分配空间。