如何在ION和Volley中处理多个请求的响应

时间:2015-10-19 08:41:40

标签: android multithreading android-volley ion ion-koush

我正在使用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中多线程的任何帮助?

issue#635

2 个答案:

答案 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(),您将获得响应。