【问题标题】:Volley Not Parsing 404 responseVolley Not Parsing 404 响应
【发布时间】:2013-08-20 21:21:44
【问题描述】:

当服务器返回 404 响应时,Volley 会返回错误,即使该 404 响应包含基于 json 的错误代码。它不解析包含 jason { code: resourceNotFound, msg:message_index }

的 404 响应

有没有办法让 Volley 处理 404 消息中的 JSON?当找不到资源时,我正在集成的服务返回 404。

【问题讨论】:

    标签: android android-volley


    【解决方案1】:

    如果您收到 404 响应,它应该进入您设置的任何错误侦听器。您在错误侦听器中获得一个 VolleyError 对象。您可以从此对象获取网络响应,然后从响应正文中获取数据。它以 char 数组的形式提供,因此您需要自己将其转换为其他内容。

    下面的 sn-p 是一个简单的请求,但您需要输入自己的 URL。

        StringRequest request = new StringRequest( Request.Method.GET, "yourURL", new Response.Listener<String>() {
            @Override
            public void onResponse( String s ) {
                //Do whatever
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse( VolleyError volleyError ) {
                try {
                    String responseBody = new String( volleyError.networkResponse.data, "utf-8" );
                    JSONObject jsonObject = new JSONObject( responseBody );
                } catch ( JSONException e ) {
                    //Handle a malformed json response
                } catch (UnsupportedEncodingException error){
    
                }
            }
        }
        );
    

    【讨论】:

      【解决方案2】:

      如果有人想在 POST 调用中添加正文/标题,请在下面添加代码

      @Override
      public HashMap<String, String> getHeaders() throws AuthFailureError {
          HashMap<String, String> params = new HashMap<>();
          params.put("apikey", Constants.apiKey);
          params.put("env", Constants.enviroment);
          params.put("Content-Type", "application/json");
          return params;
      }
      
      @Override
      public byte[] getBody() throws AuthFailureError {
          return gson.toJson(user).getBytes();
      }
      

      其中 user 是您可以传递给 Body 的对象。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-01-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-25
        • 2015-01-09
        • 1970-01-01
        相关资源
        最近更新 更多