首页 > 解决方案 > 如何在android中单行处理多个网络调用的响应代码

问题描述

这是我的面试问题。我在各个网站上搜索并尝试了很多,但我无法找到解决方案。场景:首先在android应用程序网络调用授权调用,如果它成功然后其他网络调用进入计时器大约需要10到20个调用。如果任何一个调用响应代码不是200,那么再次需要调用授权调用。这里的条件:我们不能将我们的响应代码处理逻辑放在每个网络调用逻辑中。我们需要放在一行中,以便它适用于所有调用

在安卓中怎么做?

标签: androidhttp-response-codes

解决方案


这种情况可以通过我们从我们使用的网络库中获得的回调来处理。

我个人使用 Volley 进行网络通话,因为它来自 google,所以我的客户想坚持使用它。这里不讨厌 Retrofit 和 OkHttp。

基本上,您可以通过扩展 Volley 的 Request 类来创建一个通用适配器,适配器的构造函数希望您将错误侦听器传递给 supper 方法。

public class MyVolleyRequest<T> extends Request<T>
{
public MyVolleyRequest(int method, String url, Class<T> myClass, String requestBody,
                   Response.Listener<T> listener, Response.ErrorListener errorListener) {
    super(method, url , errorListener);
   // Other initialization.
      }
 // Rest of the code
}

由于适配器的构造函数在每个网络调用中都需要一个 ErrorListner 的实例,因此您可以传递postLoginErrorResponse 登录后的所有后续网络调用。

  ErrorListener postLoginErrorResponse = new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
       // Call the authentication flow.
                }
            });

推荐阅读