На нашем сайте мы используем cookie для сбора информации технического характера и обрабатываем IP-адрес вашего местоположения. Продолжая использовать этот сайт, вы даете согласие на использование файлов cookies. Здесь вы можете узнать, как мы пользуемся файлами cookies.
Я согласен
логотип upread.ru

Отправка POST-запроса на C# и получение ответа от сервера


Сейчас подавляющее большинство сайтов в интернете обладают формой обратной связи – удобная штука, дающая возможность оставить комментарий к статье, причем сделать это без регистрации. Прочитал – что-то захотел добавить – написал – отправил. Схема простая до невозможности, но иногда хочется что-то и усложнить. Или изучить на конкретном примере. В частности, в данной статье мы рассмотрим возможность отправки такой формы без захода на сайт. Для этого нам понадобится:

  • Microsoft Visual C# - 1 штука,
  • сайт с формой обратной связи – 1 штука.
Еще необходима будет голова и не самые кривые руки, но, надеюсь, это имеется по умолчанию. Итак, запускаем наш Microsoft Visual C# (я пользуюсь версией 2010 – она, по моему мнению, наименее глючная, если накатить обновление – сервис пак первый; но код пойдет и на других студиях, включая последние 2013-2015), выбираем «Файл» - «Создать проект» - «Консольное приложение C#» и набираем (или копируем) такой код.

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. Кроме этого, если материал данной статьи был вам полезен, то вы можете оказать небольшую материальную помощь автору - поверьте, он будет благодарен любой сумме.




тегистатьи IT, си шарп, POST-запрос

Читайте также:




Новый год
Программа "Черный список"


© upread.ru 2013-2020
При перепечатке активная ссылка на сайт обязательна.
Задать вопрос
письмо
Здравствуйте! Вы можете задать мне любой вопрос. Если не получается отправить сообщение через эту форму, то пишите на почу up777up@yandex.ru
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.