Отправить HTML-форму на Java - PullRequest
4 голосов
/ 29 января 2012

Я пытаюсь заполнить форму HTML, нажать кнопку отправки формы и затем получить от нее ответ.

Заполнение формы работает очень хорошо, но я не могу понять, как нажать кнопку «Отправить» на странице.

Я использую библиотеки Apache httpclient.

Мой код:

        httpclient = new DefaultHttpClient();
        HttpPost httpost = new HttpPost(pUrl);

        List <NameValuePair> nvps = new ArrayList <NameValuePair>();
        nvps.add(new BasicNameValuePair("filter_response_time_http", "1"));
        nvps.add(new BasicNameValuePair("filter_port", "80"));
        nvps.add(new BasicNameValuePair("filter_country", "US"));
        nvps.add(new BasicNameValuePair("submit", "Anzeigen"));

        httpost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));

        response = httpclient.execute(httpost);


        entity = response.getEntity();

Код для кнопки отправки:

<input onclick="doSubmit();" id="submit" type="submit" value="Anzeigen" name="submit" /> 

Ответы [ 2 ]

3 голосов
/ 29 января 2012

Вы не «нажимаете кнопку» с помощью HttpClient; все, что он делает, - это HTTP, который не связан с JS и DOM.

Если вы хотите эмулировать браузер, используйте что-то вроде JWebUnit , которое может управлять как HttpClient, так и Selenium и обеспечивает поддержку JavaScript.

1 голос
/ 29 января 2012

Ваша кнопка отправки вызывает функцию javascript при нажатии.Вы не можете эмулировать это поведение, используя свой код Java.

Для этого вам нужно использовать браузер без головы, такой как htmlunit , который может обрабатывать JavaScript.

...