java - 在另一个类中获取 Android Volley 响应

标签 java android json android-volley

我正在尝试使用 Volley 作为 DBA 层来调用具有 JSON 对象的网络服务。因为这一层在activity和另一个服务层之下,所以它似乎不能正常工作。我将尝试解释我的设置:

主要 Activity :

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ProductService productService = new ProductService();
    productService.getProduct();
}

产品服务.java:

    public void getProduct() {
            JsonObjectRequest req = new JsonObjectRequest("http://echo.jsontest.com/name/Milk/price/1.23/", null, createMyReqSuccessListener(), createMyReqErrorListener());
            ApplicationController.getInstance().addToRequestQueue(req);
        }

        private Response.Listener<JSONObject> createMyReqSuccessListener() {
            return new Response.Listener<JSONObject>() {
                @Override
                public void onResponse(JSONObject response) {
                    Log.v("response", response.toString());
                }
            };
        }

        private Response.ErrorListener createMyReqErrorListener() {
            return new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                   return;
                }
            };
        }

我希望这已经足够清楚了。 最后,我想在一个变量中使用来自 Activity 的 ProductService::getProduct() 和来自 web 服务的实际 JSON 响应,我以后可以使用它。

然而,此刻,这条线

Log.v("response", response.toString());

甚至不执行。我做错了什么?

最佳答案

我会尝试的是:

将 getProduct 声明为

public void getProduct(Response.Listener<JSONObject> listener, 
                       Response.ErrorListener errlsn) {
            JsonObjectRequest req = new JsonObjectRequest("http://echo.jsontest.com/name/Milk/price/1.23/",null, listener, errlsn);
            ApplicationController.getInstance().addToRequestQueue(req);
        }

然后像这样调用您的 Activity :

productService.getProduct(
                new Response.Listener<JSONObject>() {
                    @Override
                    public void onResponse(JSONObject response) {
                       variableFromActivity = response;
                       //Or call a function from the activity, or whatever...
                    }
                }, new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                       //Show error or whatever...
                    }
                });

关于java - 在另一个类中获取 Android Volley 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21321586/

相关文章:

javascript - AngularJS ng-repeat 通过复杂和动态的 JSON 数组

javascript - JQuery 无法解析 JSP EL

java - 为什么加载图像在模拟器上有效但在 s4 上无效?

android - 在 Android 上使用 Google map 为数百个标记制作动画

android - 重复条目 : META-INF/myLibrary. kotlin_module

java - Gson解析json,其中每个字段都是一个对象

jquery - 如何在 Jquery 和 golang 中使用输入的 json 数据进行 ajax 调用?

java - 如何从war文件运行特定的类?

java - 异步任务中的json空指针错误

java - java 的 session 安全性足够吗?