我正在使用instagram API,因为我已经使用ion lib来获取API请求 我的问题是如何使用我的代码处理多个请求的响应
public class UserProfileActivity extends AppCompatActivity implements
FutureCallback {
:
:
Ion.with(context)
.load("http://example.com/test1")
.asString()
.setCallback(this);
Ion.with(context)
.load("http://example.com/test2")
.asString()
.setCallback(this);
@Override
public void onCompleted(Exception exception, String response) {
}
}
//and i don't want to use like this (anonymous class )
Ion.with(context)
.load("http://example.com/thing.json")
.asJsonObject()
.setCallback(new FutureCallback() {
@Override
public void onCompleted(Exception e, JsonObject result) {
// do stuff with the result or error
}
});
在这种情况下如果我请求2请求test1和test2如何在一次回调中区分2个请求响应
和Volley一样
android中多线程的任何帮助?
答案 0 :(得分:1)
您可以在标头中为每个请求(密钥必须相同)添加唯一的Id值,然后在响应检查中为相同的请求ID添加。 请注意,您需要使用“ .withResponse()”并实施“ FutureCallback< Response> ”。
public class UserProfileActivity extends AppCompatActivity implements
FutureCallback<Response<String>> {
:
:
Ion.with(context)
.load("http://example.com/test1")
.setHeader("REQUEST_ID","test1")
.asString()
.withResponse()
.setCallback(this);
Ion.with(context)
.load("http://example.com/test2")
.setHeader("REQUEST_ID","test2")
.asString()
.withResponse()
.setCallback(this);
@Override
public void onCompleted(Exception exception, Response<String> response) {
if (response.getRequest().getHeaders().get("REQUEST_ID").equals("test1")) {
//do something based on response of test 1
}else if (response.getRequest().getHeaders().get("REQUEST_ID").equals("test2")) {
//do something based on response of test 2
}
}
}
在上面的示例中,您可以将“REQUEST_ID”设为常量。
答案 1 :(得分:0)
您可以在
中传递任何类,片段或活动的上下文1- .setCallBack(context)
执行此操作后,在您提供上下文的类,Fragment或Activity中实现FutureCallBack。
在实现FutureCallBack之后,它将声明方法onComplete(),您将获得响应。