如何使用loopJ SyncHttpClient进行同步调用?

Sha*_*med 3 service android http loopj

我已经被困在这两天了,最后决定在这里发帖.

我看到loopj库用于异步调用,并提供了大量示例和解释.

但由于我不能在Android中的IntentSerive中使用异步调用,我被迫使用SyncHttpClient,但它似乎不起作用,因为当我使用SyncHttpClient时只调用onFailure回调.

在文档中也没有使用SyncHttpClient的示例.

这里也讨论了这个问题.

那么有人能给出正确的方法吗?

小智 7

你这样做与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.
Run Code Online (Sandbox Code Playgroud)