
Как делать GET/POST-запросы к интернет-страницам в C#? Элементарно!
Здесь все просто — создаем новый объект WebRequest, в конструктор которого передаем URL-адрес нужной страницы, получаем ответ методом GetResponse (). Читаем поток ответа сервера и делаем с ним что дуже угодно
System.Net.WebRequest reqGET = System.Net.WebRequest.Create(@"http://site.ru/"); System.Net.WebResponse resp = reqGET.GetResponse(); System.IO.Stream stream = resp.GetResponseStream(); System.IO.StreamReader sr = new System.IO.StreamReader(stream); string s = sr.ReadToEnd(); Console.WriteLine(s);
Здесь немного сложнее. Перед отправкой данных необходимо объекту WebRequest задать ряд опций, определяющих метод запроса и тип содержимого. Затем необходимо закодировать отправляемые данные и записать их в поток запроса. После этого можно прочитать поток ответа.
System.Net.WebRequest reqPOST = System.Net.WebRequest.Create(@"http://site.ru/send.php");
reqPOST.Method = "POST"; // Устанавливаем метод передачи данных в POST
reqPOST.Timeout = 120000; // Устанавливаем таймаут соединения
reqPOST.ContentType = "application/x-www-form-urlencoded"; // указываем тип контента
// передаем список пар параметров / значений для запрашиваемого скрипта методом POST
// здесь используется кодировка cp1251 для кодирования кирилицы и спец. символов в значениях параметров
// Если скрипт должен принимать данные в utf-8, то нужно выбрать Encodinf.UTF8
byte[] sentData = Encoding.GetEncoding(1251).GetBytes("message=" + System.Web.HttpUtility.UrlEncode("отправляемые данные", Encoding.GetEncoding(1251)));
reqPOST.ContentLength = sentData.Length;
System.IO.Stream sendStream = reqPOST.GetRequestStream();
sendStream.Write(sentData, 0, sentData.Length);
sendStream.Close();
//System.Net.WebResponse result = reqPOST.GetResponse();
И на последок пара бонусов:
System.Net.WebClient wc = new System.Net.WebClient();
wc.Credentials = new System.Net.NetworkCredential("usr", "mypassword");
byte[] response = wc.DownloadData("http://localhost/testlogin");
CookieContainer cookies = new CookieContainer(); Request.CookieContainer = cookies; // И после каждого запроса обновляем контейнер: cookies = Request.CookieContainer;
Webmoney Z163628999150, R61715184597
|
22 Ноя 2009
Не получается отправить запрос по методу POST.
все делаю как написано, но ничего не происходит.
$name = isset($_POST['Name'])?$_POST['Name']:'123'; $sql= "INSERT INTO boi ( `id` , `id_user` , `name`) VALUES ( NULL, '0', $name)"; mysql_query($sql); mysql_close($dbcnx); echo "$name";те если форма пустая в таблицу добавляется запись с именем 123, а если не пустая то с тем что есть.
так вот новая запись не добавляется вообще
22 Ноя 2009
Посмотрите содержимое ответа сервера.
Может этот Ваш PHP-скрипт содержит ошибки, или сервер отдает совершенно не ту страницу.
06 Дек 2009
А также проверьте кодировку страницы со скриптом
14 Янв 2010
А как передать через post файл, т.е. есть на странице форма выбота файла.
14 Янв 2010
Кстати, спасибо за статью, а то я сразу с вопросами полез и не отметил, что она мне помогла ))
14 Янв 2010
Как-то так:
04 Фев 2010
А как быть если я хочу сделать post запрос к сайту написаному на asp.net webforms? там вроде какая-то проблема с _VIEWSTATE есть
04 Фев 2010
Ага, есть.
Чтобы его обработать нужно сделать следующее:
1. получить содержимое страницы с формой;
2. Регулярными выражениями выдернуть из формы содержимое скрытого поля __VIEWSTATE (о регулярных выражениях );
3. Добавить полученное значение __VIEWSTATE к передаваемым данным.
10 Фев 2010
Здравствуйте, спасибо статья очень помогла, но вот вопрос возник, как отловить что произошла ошибка 404?
10 Фев 2010
Если произойдет 404, то WebRequest должен сгенерировать соответствующий WebException:
10 Фев 2010
Спасибо большое за помощь
14 Фев 2010
Все сделал, как мне советовал Кто-то, но почему-то такой запрос работает через раз((
Очень часто сервер возвращает ошибку 500.
Может что-то еще надо добавить в запрос?
14 Фев 2010
500 — это внутренняя ошибка сервера. Проблемы на стороне сервера.
14 Фев 2010
Добрый день!
А как можно отдельно отображать капчу в веббраузере виндовс формс. Или получить сессию капчи?
спасибо
26 марта 2010
А не подскажете, каким образом можно принять какую нибудь информацию от сервера, к примеру 2 переменные. Заранее благодарен
28 марта 2010
Валентин, элементарно! Получаете ответ сервера в строку и разпарсиваете ее как душе угодно. Или я что-то не понимаю?