0

我正在使用 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中多踩有什么帮助吗?

问题#635

4

2 回答 2

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”设为常量。

于 2017-05-04T06:29:57.570 回答
0

您可以在中传递任何类、片段或活动的上下文

1- .setCallBack(上下文)

这样做之后,在您提供上下文的类、Fragment 或 Activity 中实现 FutureCallBack。

实现 FutureCallBack 后,它将声明 onComplete() 方法,您将在其中获得响应。

于 2016-10-20T07:26:08.937 回答