我正在将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)。