Как узнать статус код ответа сервера WebRequest и WebResponse? - C#

Узнай цену своей работы

Формулировка задачи:

Здрасте! Такой вопросец нагрянул, надо написать функцию обращения к серверу и получения ответа, но если статус код не 200, а например 404 (страница не найдена) приложение вырубается и ругается. Есть функция:
private string POST(string Url, string Data)
{
  WebRequest req = WebRequest.Create(Url);
  req.Method = "POST";
  req.Timeout = 100000;
  req.ContentType = "application/x-www-form-urlencoded";
  byte[] sentData = Encoding.GetEncoding(1251).GetBytes(Data);
  req.ContentLength = sentData.Length;
  Stream sendStream = req.GetRequestStream();
  sendStream.Write(sentData, 0, sentData.Length);
  sendStream.Close();
  WebResponse res = req.GetResponse();
  Stream ReceiveStream = res.GetResponseStream();
  StreamReader sr = new StreamReader(ReceiveStream, Encoding.UTF8);
  //Кодировка указывается в зависимости от кодировки ответа сервера
  Char[] read = new Char[256];
  int count = sr.Read(read, 0, 256);
  string Out = String.Empty;
  while (count > 0)
  {
    String str = new String(read, 0, count);
    Out += str;
    count = sr.Read(read, 0, 256);
  }
  return Out;
}
Нашел на каком-то сайтике, как сделать если код не 200 чтобы в Out записывался например "0" или "Bad Response". Спасибо)

Решение задачи: «Как узнать статус код ответа сервера WebRequest и WebResponse?»

textual
Листинг программы
private string POST(string Url, string Data)
{
    WebRequest req = WebRequest.Create(Url);
    req.Method = "POST";
    req.Timeout = 100000;
    req.ContentType = "application/x-www-form-urlencoded";
    using (Stream sendStream = req.GetRequestStream())
    {
        byte[] sentData = Encoding.GetEncoding(1251).GetBytes(Data);
        sendStream.Write(sentData, 0, sentData.Length);
    }
    
    try
    {
        using (WebResponse res = req.GetResponse())
        using (Stream receiveStream = res.GetResponseStream())
        using (StreamReader sr = new StreamReader(receiveStream, Encoding.UTF8))
        {
            return sr.ReadToEnd();
        }
    }
    catch (WebException ex) //when (ex.Response != null) // Раскоментировать в C#
    {
        if (ex.Response == null) throw; // Убрать в C# 6
        return null;
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.75 из 5