cod*_*der 14 android android-volley
我正在使用我的应用程序中Volley提出POST请求,在我的情况下,一个很好的响应是一个201空洞的身体.我正在使用JSONRequest,拨打电话.
我的问题是错误响应处理程序被调用,因为响应为空.
以下是我的要求:
Request request = new JsonRequest<Object>(Request.Method.POST, url, body, new Response.Listener<Object>() {
@Override
public void onResponse(Object response) {
}
}, new ErrorListener(context)) {
@Override
protected Response<Object> parseNetworkResponse(NetworkResponse response) {
Log.d(TAG, "success!!!!!!");
if (response.statusCode == 201)
mListener.resetPasswordWasSent();
return null;
}
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String,String> params = new HashMap<String, String>();
params.put("Content-Type","application/json");
params.put("Accept", "application/json");
return params;
}
};
requestQueue.add(request);
Run Code Online (Sandbox Code Playgroud)
我的parseNetworkResponse函数获取调用,那么ErrorListener,和onResponse因为我得到一个方法永远不会命中NullPointerException的ErrorListener.
我可以忽略NullPointerException我的错误监听器,但我不愿意.显然,我可以简单地发送我的回调parseNetworkResponse,但我不希望弹出任何错误.
有谁知道我应该如何处理这个?
编辑: 这是堆栈跟踪:
05-06 09:44:19.586 27546-27560/com.threepoundhealth.euco E/Volley? [1830] NetworkDispatcher.run: Unhandled exception java.lang.NullPointerException
java.lang.NullPointerException
at com.android.volley.NetworkDispatcher.run(NetworkDispatcher.java:126)
Run Code Online (Sandbox Code Playgroud)
小智 14
你可以尝试像这样破解.创建一个JsonObjectRequest子类,覆盖该parseNetworkResponse方法并检查响应数据,如果它是空的byte[],则用byte[]空json的表示替换数据{}.
public class VolleyJsonRequest extends JsonObjectRequest {
...
@Override
protected Response<JSONObject> parseNetworkResponse(NetworkResponse response) {
try {
if (response.data.length == 0) {
byte[] responseData = "{}".getBytes("UTF8");
response = new NetworkResponse(response.statusCode, responseData, response.headers, response.notModified);
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return super.parseNetworkResponse(response);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9962 次 |
| 最近记录: |