J'essaie d'obtenir le numéro de code d'état HTTP de l'objet HttpWebResponse
renvoyé d'un objet HttpWebRequest
. J'espérais obtenir les chiffres réels (200, 301, 302, 404, etc.) plutôt que la description textuelle. ("Ok", "Déplacé en permanence", etc.) Le numéro est-il enterré dans une propriété quelque part dans l'objet de réponse? Des idées autres que la création d'une grande fonction de commutation? Merci.
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());
Console.Write((int)response.StatusCode);
HttpStatusCode (le type de response.StatusCode
) est une énumération dans laquelle les valeurs des membres correspondent aux codes de statut HTTP, par exemple.
public enum HttpStatusCode
{
...
Moved = 301,
OK = 200,
Redirect = 302,
...
}
Vous devez faire attention, les réponses du serveur dans la plage 4xx et 5xx lèvent une exception WebException. Vous devez l'attraper, puis obtenir le code d'état d'un objet WebException:
try
{
wResp = (HttpWebResponse)wReq.GetResponse();
wRespStatusCode = wResp.StatusCode;
}
catch (WebException we)
{
wRespStatusCode = ((HttpWebResponse)we.Response).StatusCode;
}
Comme pour "dtb", vous devez utiliser HttpStatusCode, mais après "zeldi", vous devez faire très attention aux réponses de code> = 400.
Cela a fonctionné pour moi:
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());
Il suffit de contraindre la StatusCode
à 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)