doc*_*rWW 2 android exception android-volley
我实现了一个带有齐射库的Android应用程序来连接我的数据库.与'get'和'post'的连接请求它可以工作,但服务器响应不起作用.发生这种情况是因为错误响应会自动捕获错误(例如我的服务器响应,代码201用于登录成功,但是排列错误,它就像错误一样).
我重写了类Request中的parseNetworkError:
@Override
protected VolleyError parseNetworkError(VolleyError volleyError) {
String parsed;
NetworkResponse networkResponse = volleyError.networkResponse;
if(networkResponse != null && networkResponse.data != null) {
try {
parsed = new String(networkResponse.data, HttpHeaderParser.parseCharset(networkResponse.headers));
} catch (UnsupportedEncodingException var4) {
parsed = new String(networkResponse.data);
}
NetworkResponse response = new NetworkResponse(networkResponse.data);
Response<String> parsedResponse;
switch(response.statusCode){
case 204:
...
case 401:
...
default:
return volleyError;
}
}
return super.parseNetworkError(volleyError);
}
Run Code Online (Sandbox Code Playgroud)
问题是VolleyError.此类扩展了Exception而不包含信息(代码错误).
我怎么解决这个问题?
你可以像这样处理
@Override
public void onErrorResponse(VolleyError error) {
// Handle your error types accordingly.For Timeout & No connection error, you can show 'retry' button.
// For AuthFailure, you can re login with user credentials.
// In this case you can check how client is forming the api and debug accordingly.
// For ServerError 5xx, you can do retry or handle accordingly.
if( error instanceof NetworkError) {
//handle your network error here.
} else if( error instanceof ServerError) {
//handle if server error occurs with 5** status code
} else if( error instanceof AuthFailureError) {
//handle if authFailure occurs.This is generally because of invalid credentials
} else if( error instanceof ParseError) {
//handle if the volley is unable to parse the response data.
} else if( error instanceof NoConnectionError) {
//handle if no connection is occurred
} else if( error instanceof TimeoutError) {
//handle if socket time out is occurred.
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4760 次 |
| 最近记录: |