서버로부터의 응답이 유효한 JSON (html)이 아니기 때문에 멈출 수있는 Volley JSONRequest가 있습니다.Volley에 응답 JSONException
이 오류를 정상적으로 처리하는 방법은 무엇입니까? 내가 요청을 전송하고 유효하지 않은 JSON 응답을 얻을 때 그러나, onErrorResponse가 호출되지 않습니다
JsonObjectRequest jsObjRequest = new JsonObjectRequest(Request.Method.GET, url, null, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
… something …
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
// TODO Auto-generated method stub
Log.i(TAG,"error "+error.toString());
}
});
queue.add(jsObjRequest);
:이 구현이있다. 대신 예외가 발생합니다.
08-14 16:26:15.590: D/538 - JsonRequest(27888): exception error Value <!DOCTYPE of type java.lang.String cannot be converted to JSONObject
전체 앱이 다운됩니다.
은 내가 JsonObjectRequest.java 클래스의 다음 줄에 해당 오류를 추적 관리 :@Override
protected Response<JSONObject> parseNetworkResponse(NetworkResponse response) {
try {
Log.d(TAG,"response headers "+response.headers.toString());
String jsonString =
new String(response.data, HttpHeaderParser.parseCharset(response.headers));
Log.d(TAG,"json string "+jsonString);
return Response.success(new JSONObject(jsonString),
HttpHeaderParser.parseCacheHeaders(response));
} catch (UnsupportedEncodingException e) {
Log.d(TAG,"parse error");
return Response.error(new ParseError(e));
} catch (JSONException je) {
Log.d(TAG,"exception error "+je.getLocalizedMessage());
return Response.error(new ParseError(je));
}
}
호출되는 라인은 다음과 같습니다 반환 Response.error (새 ParseError (JE));
어떻게 잡아서 앱을 중단시키지 않습니까? 사전에
감사합니다!