现在我正在做
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(
Request.Method.POST, uri, json,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject jsonObject) {
// do action
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
//manage error
}
}
);
我的 servlet 使用 Jersey 作为 JAX-RS。 作为参数传递的 uri 调用的资源不会生成任何 json 对象。如果我这样做,即使服务器上正确使用了通过 POST 发送的 json 对象,也会调用错误回调。 如果我返回带有假数据的 json,则会调用响应回调,但我不需要发回对象(浪费用户的数据带宽)。如果响应代码是 OK 或 200,我想执行正常响应操作。 我该怎么办?
最佳答案
您可以重写 JsonObjectRequest 的 parseNetworkResponse 方法,以便它接受空响应:
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(
Request.Method.POST, uri, json,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject jsonObject) {
// do action
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
//manage error
}
}
) {
@Override
protected Response<JSONObject> parseNetworkResponse(NetworkResponse response) {
try {
String json = new String(
response.data,
"UTF-8"
);
if (json.length() == 0) {
return Response.success(
null,
HttpHeaderParser.parseCacheHeaders(response)
);
}
else {
return super.parseNetworkResponse(response);
}
}
catch (UnsupportedEncodingException e) {
return Response.error(new ParseError(e));
}
}
};
关于Android 截击 : how to make json request without returned object?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34657450/