【发布时间】:2015-01-11 16:05:48
【问题描述】:
如何为 volley 解析 401 响应数据,这是我得到的服务器响应,我使用了 volley 网络响应,但它无法获取 JSON 格式的响应数据
Status 200 OK
{
alert: {
title: "Unauthorised access to appointment"
message: ""
}-
response: "0"
}
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e(TAG, "Req Failed!");
mProgressDialog.dismiss();
NetworkResponse localNetworkResponse = error.networkResponse;
if (localNetworkResponse != null) {
if (!WebAPIEngine.checkStatusCodeVolley(localNetworkResponse.statusCode)) {
AlertDialogUtil.displayErrorAlert(error.toString(), mContext);
}
} else {
Log.e(TAG, error.toString());
try {
JSONObject jsonObject = new JSONObject(error.getMessage());
if (WebAPIEngine.processErrorAlertResp(jsonObject)) {
AlertDialogUtil.displayErrorAlert(WebAPIEngine.getErrorMessage(), mContext);
} else {
AlertDialogUtil.displayErrorAlert(error.toString(), mContext);
}
}
catch (Exception e) { e.printStackTrace(); }
}
}
});
【问题讨论】:
-
你试过解析
JSONObject object = new JSONObject(new String(error.networkResponse.data));吗? -
error.networkResponse 变空
-
首先检查
error是否是NoConnectionError的实例或任何其他不包含networkResponse 的错误类型。在另一种情况下,应设置 networkResponse 并且还应包含预期的数据。