J'essaie de déterminer la response
retournée par la méthode HttpClient
de GetAsync
dans le cas d'erreurs 404 en utilisant C # et .NET 4.5.
À l'heure actuelle, je peux seulement dire qu'une erreur s'est produite plutôt que l'état de l'erreur, comme 404 ou le délai d'expiration.
Actuellement mon code mon code ressemble à ceci:
static void Main(string[] args)
{
dotest("http://error.123");
Console.ReadLine();
}
static async void dotest(string url)
{
HttpClient client = new HttpClient();
HttpResponseMessage response = new HttpResponseMessage();
try
{
response = await client.GetAsync(url);
if (response.IsSuccessStatusCode)
{
Console.WriteLine(response.StatusCode.ToString());
}
else
{
// problems handling here
string msg = response.IsSuccessStatusCode.ToString();
throw new Exception(msg);
}
}
catch (Exception e)
{
// .. and understanding the error here
Console.WriteLine( e.ToString() );
}
}
Mon problème est que je ne suis pas en mesure de gérer l'exception et de déterminer son statut et d'autres détails sur ce qui n'a pas fonctionné.
Comment gérer correctement l'exception et interpréter les erreurs qui se sont produites?
Vous pouvez simplement vérifier la propriété StatusCode
de la réponse:
static async void dotest(string url)
{
using (HttpClient client = new HttpClient())
{
HttpResponseMessage response = await client.GetAsync(url);
if (response.IsSuccessStatusCode)
{
Console.WriteLine(response.StatusCode.ToString());
}
else
{
// problems handling here
Console.WriteLine(
"Error occurred, the status code is: {0}",
response.StatusCode
);
}
}
}