2013-08-20 3 views
10

해당 404 응답에 json 기반 오류 코드가 포함되어 있어도 서버에서 404 응답이 반환되면 Volley는 오류를 반환합니다. Volley가 404 메시지에서 JSon을 처리하도록 할 여지가 있습니까? 예를 들어, JSON을 404 메시지에서 처리하려면 어떻게해야합니까? 내가 통합 할 서비스는 자원을 찾을 수 없을 때 404를 반환합니다.Volley Not Parsing 404 응답

답변

34

404 응답을 받으면 설정 한 모든 오류 수신기가 있어야합니다. 오류 수신기에서 VolleyError 객체를 가져옵니다. 이 개체에서 네트워크 응답을 가져온 다음 응답 본문에서 데이터를 가져올 수 있습니다. char 배열로 주어 지므로이를 다른 것으로 직접 변환해야합니다.

아래의 스 니펫은 간단한 요청이므로 사용자가 자신의 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){ 

      } 
     } 
    } 
    ); 
1

나는 이것을 게시하고 있는데, 나는 이것에 하루를 걸었고 누구도 그렇게 고투하지 않기를 바란다.

ANS : 누군가가 몸을 추가 할 경우 사용자가 당신이 몸에 전달할 수있는 개체 인 경우 /를 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(); 
       } 

아래의 코드를 추가합니다.

해피 코딩 :