httpresponsemessage - httpstatuscode c#
Obtención del número de código de estado HTTP(200, 301, 404, etc.) de HttpWebRequest y HttpWebResponse (5)
Hay que tener cuidado, las respuestas del servidor en el rango de 4xx y 5xx lanzan una WebException. Debe atraparlo y luego obtener el código de estado de un objeto WebException:
try
{
wResp = (HttpWebResponse)wReq.GetResponse();
wRespStatusCode = wResp.StatusCode;
}
catch (WebException we)
{
wRespStatusCode = ((HttpWebResponse)we.Response).StatusCode;
}
Estoy intentando obtener el número de código de estado HTTP del objeto HttpWebResponse
devuelto desde un HttpWebRequest
. Esperaba obtener los números reales (200, 301,302, 404, etc.) en lugar de la descripción del texto. ("Ok", "MovedPermanently", etc.) ¿Está el número enterrado en una propiedad en algún lugar del objeto de respuesta? ¿Alguna otra idea que no sea crear una función de cambio grande? Gracias.
HttpWebRequest webRequest = (HttpWebRequest)WebRequest
.Create("http://www.gooogle.com/");
webRequest.AllowAutoRedirect = false;
HttpWebResponse response = (HttpWebResponse)webRequest.GetResponse();
//Returns "MovedPermanently", not 301 which is what I want.
Console.Write(response.StatusCode.ToString());
Según ''dtb'' necesita usar HttpStatusCode, pero después de ''zeldi'' debe tener mucho cuidado con las respuestas de código> = 400.
Esto me ha funcionado:
HttpWebResponse response = null;
HttpStatusCode statusCode;
try
{
response = (HttpWebResponse)request.GetResponse();
}
catch (WebException we)
{
response = (HttpWebResponse)we.Response;
}
statusCode = response.StatusCode;
Stream dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
sResponse = reader.ReadToEnd();
Console.WriteLine(sResponse);
Console.WriteLine("Response Code: " + (int)statusCode + " - " + statusCode.ToString());
Simplemente coaccionar el StatusCode
de StatusCode
para int
.
var statusNumber;
try {
response = (HttpWebResponse)request.GetResponse();
// This will have statii from 200 to 30x
statusNumber = (int)response.StatusCode;
}
catch (WebException we) {
// Statii 400 to 50x will be here
statusNumber = (int)we.Response.StatusCode;
}
//Response being your httpwebresponse
Dim str_StatusCode as String = CInt(Response.StatusCode)
Console.Writeline(str_StatusCode)
Console.Write((int)response.StatusCode);
HttpStatusCode (el tipo de response.StatusCode
) es una enumeración donde los valores de los miembros coinciden con los códigos de estado HTTP, por ejemplo
public enum HttpStatusCode
{
...
Moved = 301,
OK = 200,
Redirect = 302,
...
}