【发布时间】:2013-05-16 12:58:13
【问题描述】:
我将Loopj AsyncHttpLibrary 用于Android 应用程序。我的目的是显示一个包含一些问题和相应答案的页面。我正在编写的 Rest API 在不同的端点提供问题和答案:
http://example.com/docs/{id}/questions
http://example.com/docs/{id}/answers
我现在正在做的是为“问题”发出一个异步 http 请求,然后在第一个请求的成功回调中,我执行第二个请求以获取“答案”。这是我清理后的代码:
MyApiClient.getQuestions(docId, new JsonHttpResponseHandler() {
@Override
public void onSuccess(JSONObject questionsResponse) {
MyApiClient.getAnswers(docId, new JsonHttpResponseHandler() {
@Override
public void onSuccess(JSONObject answersResponse) {
.... Do stuff ....
}
});
}
});
其中 MyApiClient 是库文档中推荐的 AsyncHttpLibrary 的静态包装器,如下所示:
public class MyApiClient {
private static final String BASE_URL = "http://example.com/";
private static AsyncHttpClient client = new AsyncHttpClient();
public static void get(String url, RequestParams params, AsyncHttpResponseHandler responseHandler) {
client.get(getAbsoluteUrl(url), params, responseHandler);
}
public static void post(String url, RequestParams params, AsyncHttpResponseHandler responseHandler) {
client.post(getAbsoluteUrl(url), params, responseHandler);
}
public static void getQuestions(long docId, AsyncHttpResponseHandler responseHandler) {
get("docs/" + String.valueOf(docId) + "/questions" , null, responseHandler);
}
public static void getAnswers(long docId, AsyncHttpResponseHandler responseHandler){
get("docs/" + String.valueOf(docId) + "/answers" , null, responseHandler);
}
private static String getAbsoluteUrl(String relativeUrl) {
return BASE_URL + relativeUrl;
}
}
有没有一种方法可以启动两个请求而无需等待另一个请求执行? 我还需要能够在相同的上下文中使用两个 http 结果(填充 ui)。
【问题讨论】:
-
有很多方法可以启动两个请求,而无需等待另一个请求执行。你熟悉 AsyncTask 类吗?还是线程?如果我猜对了。
-
我不熟悉 AsyncTask 类,但我使用过 Threads。我首先尝试构建一个在不同线程上运行的服务,它处理网络请求,但结果太复杂了,所以我最终使用了 loopj 的库。
标签: java android httprequest loopj