如何获得成功响应的状态代码Volley Android

1da*_*on1 11 android response status request android-volley

我想问一下使用Volley时如何获取状态代码.

我有以下代码:

StringRequest stringRequest = new StringRequest(Request.Method.GET, url,
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    // Here I want to get status code
                }
            }, new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                }
            }
    )
Run Code Online (Sandbox Code Playgroud)

可能吗 ?如果没有,为什么?

1da*_*on1 9

也许这个类而不是StringResponse:

public class NetworkResponseRequest extends Request<NetworkResponse> {
private final Response.Listener<NetworkResponse> mListener;

public NetworkResponseRequest(int method, String url, Response.Listener<NetworkResponse> listener,
                     Response.ErrorListener errorListener) {
    super(method, url, errorListener);
    mListener = listener;
}

public NetworkResponseRequest(String url, Response.Listener<NetworkResponse> listener, Response.ErrorListener errorListener) {
    this(Method.GET, url, listener, errorListener);
}

@Override
protected void deliverResponse(NetworkResponse response) {
    mListener.onResponse(response);
}

@Override
protected Response<NetworkResponse> parseNetworkResponse(NetworkResponse response) {
    return Response.success(response, HttpHeaderParser.parseCacheHeaders(response));
}

public static String parseToString(NetworkResponse response) {
    String parsed;
    try {
        parsed = new String(response.data, HttpHeaderParser.parseCharset(response.headers));
    } catch (UnsupportedEncodingException e) {
        parsed = new String(response.data);
    }
    return parsed;
}
}
Run Code Online (Sandbox Code Playgroud)

用法:

NetworkResponseRequest request = new NetworkResponseRequest(Request.Method.GET, "http://example.com/test.php",
            new Response.Listener<NetworkResponse>() {
                @Override
                public void onResponse(NetworkResponse response) {
                    // This is status code: response.statusCode
                    // This is string response: NetworkResponseRequest.parseToString(response)
                }
            }, new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                }
            }
    );
Run Code Online (Sandbox Code Playgroud)

使用我自己的实现而不是StringRequest并不好.你怎么看待这件事 ?