Cómo obtener el código de estado en la respuesta correcta Volley Android

Me gustaría preguntar cómo obtener el código de estado cuando se utiliza Volley.

Tengo código siguiente:

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) { } } ) 

Es posible ? Si no, ¿por qué?

Tal vez esta clase en lugar de 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; } } 

Uso:

 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) { } } ); 

No es bueno usar mi propia implementación en lugar de StringRequest. Qué piensa usted al respecto ?

Si todavía desea utilizar StringRequest , IMO, puede hacer referencia al código de ejemplo siguiente:

 public class MainActivity extends AppCompatActivity { private final Context mContext = this; private int mStatusCode = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); RequestQueue queue = Volley.newRequestQueue(this); String url = "http://google.com"; StringRequest request = new StringRequest(url, new Response.Listener<String>() { @Override public void onResponse(String response) { Log.i("onResponse", response); Log.i("statusCode", String.valueOf(mStatusCode)); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { Log.e("onErrorResponse", error.toString()); } }) { @Override protected Response<String> parseNetworkResponse(NetworkResponse response) { if (response != null) { mStatusCode = response.statusCode; } return super.parseNetworkResponse(response); } }; queue.add(request); } } 

La respuesta de la red se puede recibir en el siguiente formato

 NetworkResponse response = error.networkResponse; if(response != null && response.data != null){ switch(response.statusCode){ case 403: json = new String(response.data); json = trimMessage(json, "error"); if(json != null) displayMessage(json); break; } } 
  • Android: comprueba si la solicitud es GET o POST
  • Interceptar solicitudes POST en un WebView
  • Http obtener solicitud en Android
  • Volley error de excepción cuando el código de respuesta 304 y 200
  • Android Volley almacena peticiones cuando está fuera de línea
  • Android - Volley RequestFuture Timeout
  • ¿Cómo enviar un objeto JSON a través de HttpClient Request con Android?
  • Android Volley + JSONObjectRequest Almacenamiento en caché
  • Glide - agregar cabecera a la solicitud
  • Obtención de solicitud de contenido corporal mediante el método POST de Retrofit 2.0
  • Android Volley hace 2 peticiones al servidor cuando la política de reintento se establece en 0
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.