Я нашел этот класс для отправки запроса 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 имеет то же содержимое, что и страница входа, где он должен иметь код страницы приветствия. Теперь, как я могу изменить код, чтобы успешно войти?