如何在响应成功时获取volley库中的http状态代码。

时间:2015-05-06 08:59:21

标签: android android-volley status

我知道这是一个重复的问题,但仍然存在。当我们进行网络休息api呼叫时,任何人都可以为我提供解决方案或解决方法来获取响应返回的状态代码吗?

Here提供了解决方法。但我没有理解。任何人都可以用更好的方式解释我的解决方案。?

其余的api返回许多成功状态代码,如201,204和许多服务器错误。

我想在继续之前检查状态代码,并且必须做出相应的决定。

这是我现有的代码。

单击按钮

RequestQueue queue;
queue = Volley.newRequestQueue(this);
final String[] token = new String[1];
String status;
String url = "http://myapiurl";
JsonObjectRequest postRequest = new JsonObjectRequest(Request.Method.GET, url,
    new Response.Listener<JSONObject>() {
        @Override
        public void onResponse(JSONObject response) {
            try {
                // want to get status code here
                token[0] = response.getString("message");
                Toast.makeText(getApplicationContext(),token[0],Toast.LENGTH_SHORT).show();
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    },
    new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            // error
            Log.d("Error.Response", String.valueOf(error));
        }
    }
);
queue.add(postRequest);

1 个答案:

答案 0 :(得分:1)

编辑:之前根本没有回答这个问题。

在使用干净的Listener接口时执行此操作似乎并不重要,但它也可以implement this as a custom request(示例特别显示解析JSON)。您可以查看JsonObjectRequestJsonRequest来源获取灵感。

你最终会得到类似的东西(受JsonObjectRequest的启发):

Request<JSONObject> request = new Request<JSONObject>() {
  @Override
  protected Response<JSONObject> parseNetworkResponse(NetworkResponse response) {
    try {
      String jsonString = new String(
        response.data,
        HttpHeaderParser.parseCharset(response.headers));
      JSONObject obj = new JSONObject(jsonString);
      // can access response.statusCode here
      // ...
      return Response.success(obj, HttpHeaderParser.parseCacheHeaders(response));
    } catch (UnsupportedEncodingException e) {
      return Response.error(new ParseError(e));
    } catch (JSONException je) {
      return Response.error(new ParseError(je));
    }
  }
};