gpt4 book ai didi

android - 使用 Volley 处理 JSONRequest 中的空响应

转载 作者:可可西里 更新时间:2023-11-01 19:01:06 26 4
gpt4 key购买 nike

我正在使用 Volley 在我的应用程序中发出一个 POST 请求,在我的例子中,一个好的响应是一个 201一个空的 body 。我正在使用 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);

我的 parseNetworkResponse 函数被调用,然后是 ErrorListeneronResponse 方法永远不会被调用,因为我得到了一个 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)

最佳答案

你可以尝试这样破解。创建一个 JsonObjectRequest 子类,覆盖 parseNetworkResponse 方法并检查响应数据,如果是空的 byte[],用空 json {}byte[] 表示替换数据。

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);
}
}

关于android - 使用 Volley 处理 JSONRequest 中的空响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23496866/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com