автоматически отправить форму на странице asp.net - PullRequest
0 голосов
/ 29 февраля 2012

Я хочу подать заявку (в .Net), которая заполняет и отправляет форму (на веб-сайте asp.net).

Это приложение должно прочитать страницу, найти поля (входные данные), извлечь имя / идентификатор полей, которые я хочу заполнить, и отправить страницу на сервер.

Я не хочу, чтобы приложение содержало веб-браузер и автоматизировало навигацию по нему!

Что у меня есть: у меня есть часть, которая загружает HTML, у меня есть часть, которая находит поля иизвлечь их имена / идентификаторы.

Что мне нужно: способ отправки формы на сервер ( POST , а не GET).

В html-странице отправка осуществляется с помощью javascript, примерно так:

javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("Button1", "", true, "", "", false, false))

Вопрос: как подать заявку в этом случае?

Ответы [ 4 ]

2 голосов
/ 29 февраля 2012

Вы можете просто отправить, используя javascript:

<script type="text/javascript">
  document.forms["your_form_id"].submit();
</script>
2 голосов
/ 29 февраля 2012

Вы можете использовать объекты HttpWebRequest / HttpWebResponse для отправки / получения HTTP-запросов на сервер. Когда вы получите ответ, найдите различные поля INPUT, которые вы хотите изменить, и создайте блок данных запроса POST с различными полями, такими как

firstname=Joe&lastname=Doe&...

затем отправьте это как запрос POST. Вам также необходимо создать правильный набор заголовков, чтобы эмулировать реальный браузер, отправляющий запрос, иначе сайт может отказаться обрабатывать его правильно.

Вы можете использовать Fiddler, чтобы сначала перейти на сайт и сохранить запросы в Firefox, а затем использовать информацию из этих запросов для создания ваших HttpWebRequest объектов.

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

0 голосов
/ 29 февраля 2012

Прав ли я, говоря, что страница с формой на ней не принадлежит вашему сайту, и что вы читаете какую-то форму на внешнем сайте?

Если у вас есть все поля, можете 'Вы также читаете атрибут 'action' в теге формы и выполняете POST в том же месте со всеми ключами / значениями, которые вы уже получили?

Вы можете использовать HttpWebRequest, чтобы сделать это всерверный код, и просто отправьте данные POST таким образом.

http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.aspx

0 голосов
/ 29 февраля 2012

Вы можете поместить javascript после загрузки страницы, чтобы просто отправить форму.

document.forms[0].submit();

Если у вас есть только одна форма на странице, в противном случае вы можете поместить имя формы в кавычки внутриforms[] скобки.

...