Отправка POST-запроса на страницу с несколькими формами - PullRequest
1 голос
/ 30 ноября 2011

Я нашел этот класс для отправки запроса POST на веб-страницу. Теперь я попробовал это на тестовой странице с единственной формой, и это работает. Но теперь я хотел бы сделать POST-запрос к странице, которая имеет несколько форм на одной странице. Можно ли выбрать конкретную форму, если она определена с именем?

Например, вот так:

<form method="post" action="index.php" target="_parent">
...
</form>
<form method="post" action="index.php" name="login" target="_top" class="login">
// This is the form that I want to post data
...
<input value="Go" type="submit" id="input_go" />
</form>

EDIT:

Это решение, предоставленное Anfurny, не работает:

post.PostItems.Add("login", "input_go");

Я обновил код, кнопка, которая отправляет, имеет только определенный идентификатор.

EDIT2:

Я нашел хороший пример страницы с двумя формами. phpMyAdmin demo , он имеет две формы, одна для выбора другого языка, другая для входа в систему. Это демо имеет:

  • username = root
  • пароль пуст

Теперь я попытался войти в систему программно с помощью этого кода (он использует класс, который я разместил по ссылке в начале страницы):

// First we create an instance of a class PostSubmitter.
PostSubmitter post = new PostSubmitter();

// We set the URL to which the POST should go.
post.Url = "http://demo.phpmyadmin.net/STABLE/index.php";

// We add items (password and username).
post.PostItems.Add("pma_username", "root");
post.PostItems.Add("pma_password", "");

// Also tried to add to which login form should post and the
// value set to id of the submit button, no luck.
//post.PostItems.Add("login_form", "input_go");

// Here we set the method.
post.Type = PostSubmitter.PostTypeEnum.Post;

// Getting back the result.
string result = post.Post();

// Writting it to the file.
TextWriter tw = new StreamWriter("C:/response.txt");
tw.WriteLine(result);
tw.Close();

Файл response.txt имеет то же содержимое, что и страница входа, где он должен иметь код страницы приветствия. Теперь, как я могу изменить код, чтобы успешно войти?

Ответы [ 2 ]

0 голосов
/ 30 ноября 2011

Вы пытались сделать что-то вроде этого:

post.PostItems.Add("FORM_NAME","SUBMIT_BUTTON_NAME ");

?

Где FORM_NAME - это имя формы, которую вы хотите отправить, а SUBMIT_BUTTON_NAME - это имя кнопки отправки, на которую вы хотите сделать вид, что была нажата (если присутствует более одной).

0 голосов
/ 30 ноября 2011

Обычно, когда у вас есть несколько форм, отправляющих сообщения в одно и то же место, вы различаете их с помощью кнопки, на которую нажали. Разве вы не можете сделать то же самое и добавить виртуальную кнопку (действие) в список значений вашего поста?

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