【问题标题】:android volley can't get responseandroid volley 无法得到响应
【发布时间】:2015-11-18 21:13:56
【问题描述】:

我正在尝试使用 volley 从 instagram api 获取响应,但无法获取数据。我没有收到任何回调方法,如 onResponse 或 onErrorResponse。什么都没有出现。我看不到任何错误。

这是我的代码。

public String getUserId(String usrName) {
    url = TContants.urlBeforeUserId + usrName + TContants.urlAfterUser;

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

        @Override
        public void onResponse(JSONObject response) {
            TagsResponse gsonData = gson.fromJson(response.toString(), TagsResponse.class);
            userId = gsonData.data[0].id.toString();
        }

    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            Log.e("Volley:", "getUserId response error");
        }
    });

    AppController.getInstance().addToRequestQueue(jsonObjReq,
            TContants.tag_json_obj);
    return userId;
}

url 工作正常,我测试过了。

当代码运行 JsonObjectRequest 创建时。但下一步它会跳过 onResponse 和 onErrorResponse 方法。请帮忙。

【问题讨论】:

  • 请了解多线程的工作原理...ideone.com/PPHi95 getUserId 末尾的示例中看到的那样,userId 将不会被设置...
  • 发布您的AppController 代码。国际海事组织,你应该用AppController.getInstance(this).addToRequestQueue(jsonObjReq, TContants.tag_json_obj);替换AppController.getInstance().addToRequestQueue(jsonObjReq, TContants.tag_json_obj);

标签: android response android-volley


【解决方案1】:

onResponse 里面的代码没有被跳过,它应该是这样工作的,你看到的是Callback

非常快速且通用的解释是:
此代码不会串行运行,相反,onResponse 在这种情况下是您对请求对象提供的接口的实现,它将在响应到达时调用,这可能需要几毫秒到几秒(取决于服务器,因为此回调用于网络操作)。

了解回调处理(包括网络,以及使用接口创建的简单接口——如果你还没有——了解接口),因为它是编程的主要部分。

补充:

要查看响应何时返回,我会在发送之前打印所有参数以确保它们正确发送,并打印响应本身(onResponse 开头的response.toString())并稍等片刻发送请求后查看。 (如果打印不包含可读信息,请不要惊慌,这取决于 .toString() 方法的实现,现在它只是表明您得到了响应)。

【讨论】:

    猜你喜欢
    • 2017-09-28
    • 1970-01-01
    • 2021-08-19
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-18
    • 2016-06-22
    相关资源
    最近更新 更多