【问题标题】:how to handle multiple request's response in ION and Volley如何在 ION 和 Volley 中处理多个请求的响应
【发布时间】:2015-10-19 08:41:40
【问题描述】:

我正在使用 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

【问题讨论】:

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


    【解决方案1】:

    您可以在标头中为每个请求添加一个唯一的 Id 值(Key 必须相同),然后在响应中检查相同的请求 ID。 请注意,您需要使用“.withResponse()”并实现“FutureCallback”。

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

    【讨论】:

      【解决方案2】:

      您可以在

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

      1- .setCallBack(context)

      完成后,在您提供上下文的类、Fragment 或 Activity 中实现 FutureCallBack。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-08-09
        • 1970-01-01
        • 2020-04-12
        • 1970-01-01
        • 1970-01-01
        • 2016-12-27
        相关资源
        最近更新 更多