Android排球:如何处理错误响应

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而不包含信息(代码错误).

我怎么解决这个问题?

Ram*_*dal 8

你可以像这样处理

@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)