Volley Not Parsing 404回应

Tes*_*est 12 android android-volley

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

无论如何让Volley在404消息中处理JSon?我正在集成的服务在无法找到资源时返回404.

Har*_*kin 34

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

下面的代码片段是一个简单的请求,但您需要输入自己的网址.

    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){

            }
        }
    }
    );
Run Code Online (Sandbox Code Playgroud)