Сейчас мы рассмотрим два способа отправки запросов на сервер.По названию можно понять, что POST - отправка данных на сервер, а GET - получение данных.
Для начала подключим два пространства имен:
Код:
using System.Net;
using System.IO;
В следующем коде мы реализуем GET запрос (получение данных от сервера) и занесение ответа в string переменную.
Код:
private string GET(string Url, string Data)
{
WebRequest req = WebRequest.Create(Url + "?" + Data); //Делаем запрос
WebResponse resp = req.GetResponse(); //Получаем ответ
Stream stream = resp.GetResponseStream(); //Создаем stream
StreamReader sr = new StreamReader(stream); //Активируем streamreader
string Out = sr.ReadToEnd(); //Заносим данные в переменную
sr.Close();
return Out;
}
Здесь мы видим, что запрос принимает два параметра - Url и Data. К примеру нам нужно сделать запрос в виде
Код:
http://api.waa.ai/?url=http://zhyk.ru/
Тогда в Url мы заносим
Код:
http://api.waa.ai/
, а в Data пойдет
Код:
url=http://zhyk.ru/
. Теперь разберемся с POST запросами, почти тоже самое что и в предыдущим примером, но чуточку сложнее.
Код:
private string POST(string Url, string Data)
{
WebRequest req = WebRequest.Create(Url); //Указываем 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;
}
В данной функции мы имеем все те же параметры что и в GET, но в POST нужно указывать заголовки(помимо Url). На этом в принципе все. Добавлю, что когда запросов много, то лучше выполнять их в разных потоках(I`m КЭП). Спасибо за внимание!
Вопрос,как отправить post запрос когда при ручной отправке(жмякнуть на кнопку) в адресной строке вот такой ужс? [Ссылки могут видеть только зарегистрированные пользователи. ]clash%20of%20clans%20%D1%87%D0%B8%D1%82%D1%8B ,сам запрос - clash of clans читы,слово читы я адресной строке я даже не нашел.
Вопрос,как отправить post запрос когда при ручной отправке(жмякнуть на кнопку) в адресной строке вот такой ужс? [Ссылки могут видеть только зарегистрированные пользователи. ]clash%20of%20clans%20%D1%87%D0%B8%D1%82%D1%8B ,сам запрос - clash of clans читы,слово читы я адресной строке я даже не нашел.
Это уж скорее GET запрос. В нем русские буквы и разделительные символы заменились на кодированные для URL. Так их отправлять и надо, чтобы сайт понял
Последний раз редактировалось MembRupt; 05.07.2014 в 18:11.
По названию можно понять, что POST - отправка данных на сервер, а GET - получение данных.
То есть методом GET нельзя передать данные на сервер? Оба метода(как и многие другие методы HTTP протокола) отправляют данные только разными "способами". GET - отправка данных на сервер в "открытом виде", в то время как POST - в "закрытом виде" в теле метода и т.д. По мимо этого можно добваить о передаваемом размере каждым из методов ну и т.д.
Можно использовать библиотеку xNet, это библиотека с открытым исходным котом, выложена на GitHub.
Поддерживает в отличии от стандартной библиотеки .Net работу c Socket 4.5 прокси.
Вот пример Get запроса:
Код:
using (var request = new HttpRequest())
{
request.UserAgent = HttpHelper.ChromeUserAgent();
// Отправляем запрос.
HttpResponse response = request.Get("habrahabr.ru");
// Принимаем тело сообщения в виде строки.
string content = response.ToString();
}