2009-09-05 86 views
1

我想通过java填充HTTP表单的文本字段,然后想要通过java点击提交按钮,以便在提交表单后返回文档的页面源。 我可以通过直接发送HTTP请求来做到这一点,但我不这样做。如何通过java填充HTTP表单?

+7

你的意思是HTML表单正确吗?请注意“非常紧急”在这里被认为是粗鲁的。 – AnthonyWJones 2009-09-05 11:22:00

回答

0

您可能需要编写一个Java Applet,因为发送直接请求的唯一方法是将其与浏览器连接。

当然,为了这个工作,你必须嵌入applet到页面中。如果您不控制页面,则无法完成此操作。如果你确实控制了页面,那么你可能会使用Javascript,而不是试图让Java Applet去完成它,这会更加麻烦和困难。

只是为了澄清,您创建HTTP请求的问题是什么以及您为什么要使用不同的方法?

8

我通常用HtmlUnit来做。他们有自己的页面上的例子:

@Test 
public void submittingForm() throws Exception { 
    final WebClient webClient = new WebClient(); 

    // Get the first page 
    final HtmlPage page1 = webClient.getPage("http://some_url"); 

    // Get the form that we are dealing with and within that form, 
    // find the submit button and the field that we want to change. 
    final HtmlForm form = page1.getFormByName("myform"); 

    final HtmlSubmitInput button = form.getInputByName("submitbutton"); 
    final HtmlTextInput textField = form.getInputByName("userid"); 

    // Change the value of the text field 
    textField.setValueAttribute("root"); 

    // Now submit the form by clicking the button and get back the second page. 
    final HtmlPage page2 = button.click(); 
} 

而且你可以阅读更多here.

+0

HtmlUnit等其他项目,最好来自Apache或谷歌? – 2013-06-26 20:48:03

3

如果你不想直接跟HTTP(为什么?),然后看看Watij

它允许您在Java过程中调用浏览器(IE)作为COM控件,使用它们的文档ID等浏览页面元素,填写表单并按下按钮。因为它运行的是浏览器,所以Javascript将像平常一样运行(就像手动完成这项操作一样)。

+0

非常感谢。我只是看着相同的选项,并发现它是适合我需要的最佳选择。 – 2009-09-05 11:46:03

+0

在你的其他帖子中提到linux。不知道它是否是同一个应用程序,但Watij仅适用于Windows。 – 2009-09-05 12:17:32

+0

是的,它是同一个应用程序。我需要在Linux上运行应用程序(debian)。你能给我推荐像watij for linux一样的东西吗? 这很紧急。 第二个问题,com/jniwrapper/win32/ie/WebBrowser类未找到.. 从哪里可以下载该库 – 2009-09-05 12:39:00