Отправить HTTP Post с браузером по умолчанию с C # - PullRequest
4 голосов
/ 07 января 2011

Мне интересно, можно ли отправлять POST-данные с помощью браузера по умолчанию на компьютере в C #.

Вот такая ситуация.Моему клиенту хотелось бы, чтобы приложение C # открывало его браузер и отправляло информацию о клиенте в веб-форму.Эта веб-форма будет за экраном входа в систему.Со стороны приложения предполагается, что после отправки данных клиента на экран входа в систему экран регистрации будет передавать эту информацию в веб-форму для ее предварительного заполнения.Это будет сделано по протоколу HTTPS, и клиент хотел бы, чтобы это было сделано с помощью POST, а не GET, поскольку информация о клиенте будет отправлена ​​в виде простого текста.Запросы.В качестве примера http://geekswithblogs.net/rakker/archive/2006/04/21/76044.aspx

Таким образом, версия TL; DR будет

1) Открыть браузер

2) Открыть некоторый URL с данными POST

Спасибо за вашу помощь,

Пол

Ответы [ 4 ]

5 голосов
/ 07 января 2011

Однажды я справился с подобной ситуацией, сгенерировав HTML-страницу на лету с настройкой формы со скрытыми значениями для всего. На странице было немного Javascript, так что при загрузке он отправлял форму, поэтому публиковал данные по мере необходимости.

Я подозреваю, что этот метод будет работать для вас.

  1. Создать словарь полей и значений
  2. Создание HTML-страницы с Javascript для автоматической отправки при загрузке страницы
  3. Запись страницы во временную папку на диске
  4. Запуск браузера по умолчанию с этой страницей

Помните, что данные POST также отправляются в виде открытого текста. POST - это, как правило, более чем пара полей, так как вы можете уместить больше данных (ограничение в 2048 байт для URL-адресов) и чтобы у вашего пользователя был удобный URL-адрес для просмотра в браузере.

0 голосов
/ 07 января 2011

Можете ли вы скомпилировать свою логику в C #, а затем вызвать ее из PowerShell? С PowerShell вы можете очень легко автоматизировать Internet Explorer . Это только IE, но вы также можете использовать WaitnN .

0 голосов
/ 07 января 2011

При использовании SSL ничего не отправляется в виде простого текста, оно зашифровано.Если вы не установите браузер по умолчанию (IE, Firefox, Chrome и т. Д.), Вам придется выяснить, что такое браузер по умолчанию, и использовать его API для этой работы (если это возможно).

Вероятно, должно быть быстрее и эффективнее открыть браузер по умолчанию, вызвав URL с помощью Start Process и передать информацию в строке запроса (это делает GET вместо POST, что, я знаю, не то, чтовы спрашиваете).

Ответ от сервера может быть перенаправлением, и перенаправление может отправить заполненную форму (сохранение значений в сеансе или что-то подобное).

Таким образом, сложность переносится на веб-сайт, а не на приложение Windows, которое должно быть легче обновить, если что-то пойдет не так.

HTH

0 голосов
/ 07 января 2011

Все, что вы помещаете в конец URL-адреса, считается строкой запроса, что и заполняет GET. Они более заметны, чем POST-данные в теле, но не более безопасны для сниффера.

Итак, короче говоря, нет.

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