Как разместить данные на сайте - PullRequest
11 голосов
/ 16 декабря 2011

Мне нужно опубликовать данные на веб-сайте. Поэтому я создал небольшое приложение в C # .net, где я открываю этот сайт и заполняю все элементы управления (переключатели, текстовые поля, флажки и т. Д.) Значениями из моей базы данных. У меня также есть событие нажатия на кнопку ОТПРАВИТЬ. Затем приложение ждет 10-15 секунд, а затем копирует ответ с веб-страницы в мою базу данных.

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

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

Ответы [ 3 ]

12 голосов
/ 16 декабря 2011

Вы можете использовать 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.

3 голосов
/ 16 декабря 2011

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

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

1 голос
/ 16 декабря 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...