我已经被困在这两天了,最后决定在这里发帖.
我看到loopj库用于异步调用,并提供了大量示例和解释.
但由于我不能在Android中的IntentSerive中使用异步调用,我被迫使用SyncHttpClient,但它似乎不起作用,因为当我使用SyncHttpClient时只调用onFailure回调.
在文档中也没有使用SyncHttpClient的示例.
这个问题也在here讨论.
那么有人能给出正确的方法吗?
解决方法:
你这样做与async http客户端一样,你提供了实现ResponseHandlerInterface的处理程序,但现在请求将在同一个线程中执行.您可以通过在同步http客户端调用后将调试器设置为下一个语句来自行检查,并在执行onSuccess / onFailure回调后看到调试器将命中此语句.在异步调试器的情况下,甚至在你的onStart方法之前就会遇到这种情况,因为它将在一个单独的线程中执行.
例:
mSyncClient.post("http://example.com", params, new JsonHttpResponseHandler() {
@Override
public void onStart() {
// you can do something here before request starts
}
@Override
public void onSuccess(int statusCode, Header[] headers, JSONObject response) {
// success logic here
}
@Override
public void onFailure(int statusCode, Header[] headers, Throwable e, JSONObject errorResponse) {
// handle failure here
}
});
// the statements after this comment line will be executed after onSuccess (or onFailure ) callback.