2015-09-22 7 views
0

Я использую HttpClient для получения ответов от API сервера.Сообщения об ошибках `HttpClient`

Это API что-то вроде:

/API/изображения/{0}

где {0} это имя образа.
Есть только три возможных значения имен изображения, как {"green", "red", "blue"}

Я не знаю, какие изображения в настоящее время присутствуют, так что я сделать API вызов всех трех изображений:

  • /API/изображения/зеленый
  • /API/изображения/красный
  • /API/изображения/синий

HttpClient может возвращать много сообщений об ошибках, но я хочу сделать особый случай для:

ответа код состояния не указывает на успех: 404 (Not Found).

Вопрос: возможно сделать HttpClient возвращение (в данном случае) сообщение об ошибке только с 404?

+0

Возможно, это действительно так, но я не могу найти его? –

+2

Пожалуйста, покажите свой код «HttpClient» и то, что вы хотите сделать «возвратом». Вы можете проверить код состояния ответа ... – CodeCaster

ответ

4

HttpResponseMessageStatusCode класс содержит свойство, так почему вы просто не хотите, чтобы справиться с этим, как это:

using (HttpClient client = new HttpClient()) 
{ 
    HttpResponseMessage response = await client.GetAsync(url); 
    switch (response.StatusCode) 
    { 
      case System.Net.HttpStatusCode.NotFound: { /* return here anything you want on 404 */ } break; 
      default: { /* default behavior */ } break; 
    } 
} 
0

Объект ответа будет иметь свойство StatusCode, которые могут быть доступны следующим образом: (обратите внимание, что StatusCode .OK = 200)

using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) 
      { 
       responseString = new StreamReader(response.GetResponseStream()).ReadToEnd(); 
       if (response.StatusCode != HttpStatusCode.OK) 
... 
+5

Нет причин, чтобы прочитать весь ответ перед проверкой кода состояния - код состояния должен быть проверен * до * пытается прочитать тело ответа, чтобы избежать ненужной работы –