java - API 请求多次使用相同的截击类?

标签 java android android-volley

我知道 volley 对于网络图书馆来说非常有用。我的问题是我必须多次调用 API 请求,是否有机会在单独的类中调用此代码并每次都使用它?

String url = "sameurl";

JsonObjectRequest jsonObjReq = new JsonObjectRequest(Method.POST,
        url, null,
        new Response.Listener<JSONObject>() {

            @Override
            public void onResponse(JSONObject response) {
                Log.d(TAG, response.toString());

            }
        }, new Response.ErrorListener() {

            @Override
            public void onErrorResponse(VolleyError error) {
                VolleyLog.d(TAG, "Error: " + error.getMessage());
            }
        }) 
// Adding request to request queue
AppController.getInstance().addToRequestQueue(jsonObjReq);

最佳答案

您可以使用监听器来执行此操作。将所有网络和 Volley 相关的代码移到一个单独的类中。将其所需的对象和数据(如 URL、http 方法、 header 等)作为方法参数传递。

您还需要有一个您的调用类将实现的接口(interface),当收到响应或请求失败时,volley将调用该接口(interface)的方法来通知调用者。

您的界面将如下所示

public interface HttpListener {
   void onResponseReceived(JSONObject response);
   void onError(VolleyError error);
}

现在在你的 Volley 课上你会遇到这样的事情

JsonObjectRequest jsonObjReq = new JsonObjectRequest(Method.POST,
        url, null,
        new Response.Listener<JSONObject>() {

            @Override
            public void onResponse(JSONObject response) {
                Log.d(TAG, response.toString());
                //pass httpListener instance as a method parameter to this method
                if(httpListener != null) {
                    httpListner.onResponseReceived(response);
                }

            }
        }, new Response.ErrorListener() {

            @Override
            public void onErrorResponse(VolleyError error) {
                VolleyLog.d(TAG, "Error: " + error.getMessage());
                if(httpListener != null) {
                    httpListner.onError(VolleyError error);
                }
            }
        }) 

当您进行 http 调用时,您还需要传递此监听器。最简单的方法是让您的调用者类实现此接口(interface)并将 this 作为 HttpListner 的对象传递

您的调用者类将实现 HttpListener 接口(interface)并重写方法。每当您通过此重写方法收到响应或任何错误时,您都会收到回调。

关于java - API 请求多次使用相同的截击类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51345516/

相关文章:

java - spring mvc 中不允许 405 方法,但其他操作和 Controller 工作正常?

android - Cordova 安卓支付插件

android - 如何将数据从服务发送到 Activity ?

android - 按下蓝牙设备按钮应触发应用程序中的 Onclick 监听器

android - 无法解析符号 'RequestQueue'

java - 如何分发多模块maven项目

java - 在 ORMLite 中生成的 id

java - 使用分词器来计算文件中的单词数?

java - Volley字符串请求在android中没有给出响应

php - Android ResponseListener 如何检索数组的数组?