Отправка POST-запроса на C# и получение ответа от сервера
Сейчас подавляющее большинство сайтов в интернете обладают формой обратной связи – удобная штука, дающая возможность оставить комментарий к статье, причем сделать это без регистрации. Прочитал – что-то захотел добавить – написал – отправил. Схема простая до невозможности, но иногда хочется что-то и усложнить. Или изучить на конкретном примере. В частности, в данной статье мы рассмотрим возможность отправки такой формы без захода на сайт. Для этого нам понадобится:
- Microsoft Visual C# - 1 штука,
- сайт с формой обратной связи – 1 штука.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net; using System.Collections.Specialized; namespace ConsoleApplication { class Program { static void Main(string[] args) { string url = "http://upread.ru/save.php"; using (var webClient = new WebClient()) { var pars = new NameValueCollection(); pars.Add("fname", "текст сообщения"); var response = webClient.UploadValues(url, pars); string str = System.Text.Encoding.UTF8.GetString(response); Console.WriteLine(str); Console.ReadKey(); } } } }Разберем получившуюся программку построчно. Строки 1-6 – это подключение библиотек и пространства имен, здесь нет ничего интересного. В строке 14 мы определяем переменную url, как несложно догадаться, в ней и задается адрес, на который посылается POST-запрос. Стоит обратить внимание, что здесь ставится адрес именно той страницы, которая принимает запрос, а не с которой он отправляется. Самый простой способ узнать, какая страница на сайте его принимает и обрабатывает – это посмотреть её исходный код. В исходном коде находим такую строку
<FORM ACTION="save.php" method = "post">Параметр «ACTION» и определяет адрес, на который посылаются данные. В рассматриваемом примере я использую страницу своего сайта «save.php». Эта страница принимает сообщения, которые посетители отправляют со страниц с рецензиями на книги или фильмы.
В строке 17 создается коллекция параметров. А следующая строка добавляет параметры. Здесь первый параметр – это идентификатор, а второй – значение, которое надо отправить. В нашем случае идентификатор – это имя textarea; узнать его можно, если найти в исходном коде страницы строку
«textarea name="fname"»Строка 19 отправляет параметры на сервер. Фактически, уже после этой строки произошло соединение с удаленным сервером и сообщение полетело. Куда-то полетело, в общем. Но нам же интересно узнать, как отреагировал сервер, правда? Именно ответ сервера и выводит в консоль строка 21. А строка 22 требуется для того, чтобы вы успели прочитать ответ. Здесь особое внимание стоит обратить на строку 20 – в ней происходит преобразование массива байт в строку. В данном конкретном примере мы используем «Encoding.UTF8» - так как кодировка моего сайта UTF8. Существуют и другие параметры кодирования для метода GetString: Encoding.ASCII, Encoding.Unicode, Encoding.UTF7, Encoding.Default (для ANSI) ну и так далее.
В примере вы получите текст страницы – её исходный код.C# добросовестно соединится и выведет его на консоль. Вот, собственно и все: мы решили задачу. Задача, напомню, заключалась в том, чтобы средствами C# отправить POST-запрос и получить ответ.
Напоследок стоит заметить, что таких сайтов, которые позволяют просто отправлять комментарии или сообщения без предварительной обработки мало, и их становится все меньше. Сейчас все большее распространение получают капчи, причем. Общая схема отправки комментария на страницу с капчей такая: создаем соединение - >получаем страницу -> обрабатываем капчу -> извлекаем из неё данные (цифры, буквы) -> отправляем запрос. Обработка каждой конкретной капчи – это не самая тривиальная задача, для её решения используются довольно сложные методы, например, применяются нейронные сети. Но это уже тема для другой статьи.
Если вам требуется какая-либо помощь по языку C#, необходима программа на нем, то я вам с удовольствием помогу, правда, не совсем безвозмездно. Пишите up777up@yandex.ru: создание программ на заказ - как под Windows, так и под другие операционные системы - на Java. Кроме этого, если материал данной статьи был вам полезен, то вы можете оказать небольшую материальную помощь автору - поверьте, он будет благодарен любой сумме.
Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.