Как отправить данные на сайт

Мне нужно отправить данные на веб-сайт. Поэтому я создал небольшое приложение в С#.net, где я открываю этот сайт и заполняю все элементы управления (переключатели, текстовые поля, флажки и т.д.) Со значениями из моей базы данных. У меня также есть событие click на кнопке SUBMIT. Затем приложение ждет 10-15 секунд, а затем копирует ответ с веб-страницы в мою базу данных.

Как вы можете видеть, это действительно суетливый процесс. Если есть тысячи записей для загрузки, это приложение занимает гораздо больше времени (из-за того, что для ответа отвечает 15 секунд).

Есть ли другой способ публикации данных? Я ищу что-то вроде объединения всех полей с его значением и загрузки его как потока данных. Как это будет работать, если на сайте есть https, а не http?

Ответ 1

Вы можете использовать HttpWebRequest для этого, и вы можете объединить все значения, которые вы хотите отправить, в одну строку для запроса. Это может выглядеть примерно так:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://www.yoursite.com");
request.Method = "POST";

formContent = "FormValue1=" + someValue +
    "&FormValue2=" + someValue2 +
    "&FormValue=" + someValue2;

byte[] byteArray = Encoding.UTF8.GetBytes(formContent);
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = byteArray.Length;
Stream dataStream = request.GetRequestStream();
dataStream.Write(byteArray, 0, byteArray.Length);
dataStream.Close();
WebResponse response = request.GetResponse();
dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
string responseFromServer = HttpUtility.UrlDecode(reader.ReadToEnd());
//You may need HttpUtility.HtmlDecode depending on the response

reader.Close();
dataStream.Close();
response.Close();

Этот метод должен отлично работать для http и https.

Ответ 2

В MSDN есть отличная статья с пошаговыми инструкциями, в которых подробно описывается, как вы можете использовать класс WebRequest для отправки данных. Ссылка ниже:

http://msdn.microsoft.com/en-us/library/debx8sh9.aspx

Ответ 3

Да, существует класс WebClient. Посмотрите документацию. Существует несколько полезных методов для запросов GET и POST.