C#: Функции POST и GET запросов, готовые к применению

Сегодня поговорим о запросах POST и GET. Скажу сразу в этом в свое время мне помогла какая-то статья из Интернета, так что на полную самописность кода я не претендую. =)


Думаю не стоит объяснять зачем нужно посылать запросы из своего приложения, причин может быть много, но главной пожалуй является дополнительная возможность защитить свое приложение от взлома и кряков, ведь взломать сервер куда более сложней, чем приложение.

Не будем тянуть время и перейдем к сути вопроса: «Как же отправить GET или POST запрос в C#».

Отправка POST запроса

private static string POST(string Url, string Data)
{
  System.Net.WebRequest req = System.Net.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;
  System.IO.Stream sendStream = req.GetRequestStream();
  sendStream.Write(sentData, 0, sentData.Length);
  sendStream.Close();
  System.Net.WebResponse res = req.GetResponse();
  System.IO.Stream ReceiveStream = res.GetResponseStream();
  System.IO.StreamReader sr = new System.IO.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;
}

Отправка GET запроса

private static string GET(string Url, string Data)
{
   System.Net.WebRequest req = System.Net.WebRequest.Create(Url + "?" + Data);
   System.Net.WebResponse resp = req.GetResponse();
   System.IO.Stream stream = resp.GetResponseStream();
   System.IO.StreamReader sr = new System.IO.StreamReader(stream);
   string Out = sr.ReadToEnd();
   sr.Close();
   return Out;
}

Так же не плохо было бы заключить весь код в try {} catch {} finally {} блоки. Это позволит более корректно получать данные и обрабатывать их в случае возникновения проблем с сетью.

Пример:
Пусть есть адрес http://site.ru/ который принимает POST параметры fname и lname и выводит их на экран (сначала lname потом fname). А так же принимает GET параметр age и так же выводит его. Тогда:

string Answer = POST("http://site.ru/", "fname=Andrey&lname=Mamatov");
//Answer = Mamatov Andrey
Answer = GET("http://site.ru/", "age=123");
//Answer = 123
Запись опубликована в рубрике C# с метками , , , . Добавьте в закладки постоянную ссылку.