【发布时间】:2014-05-02 14:59:04
【问题描述】:
我正在开发一个使用以下网站的 Java 项目: http://feedenlarger.com/
程序本质上只是在“输入部分提要 URL”框中输入一个链接 [ 例如 http://feeds.bbci.co.uk/news/rss.xml ] 并提交表单。提交表单后,我想下载用户手动填写表单并单击页面上的按钮时将访问的页面。
如何在 Java 中做到这一点?
我已成功使用以下表单下载页面:
private String readWebPage() throws IOException{
URL u = null;
URLConnection urlC = null;
BufferedInputStream bis = null;
try{
u = new URL(this.url);
urlC = u.openConnection();
headers = urlC.getHeaderFields();
bis = new BufferedInputStream(urlC.getInputStream());
StringBuilder builder = new StringBuilder();
int byteRead;
while ((byteRead = bis.read()) != -1)
builder.append((char) byteRead);
bis.close();
return builder.toString();
} catch(IOException e){
System.out.println("Webpage: IO Error");
throw e;
}
}
注意:我有兴趣将标头保存在内存中,因此最好使用 URLConnection 或类似方法。
我现在如何填写表格、使用 POST/GET 请求提交并下载下一个网页?提交表单后,我尝试从浏览器生成的link 下载页面,但这给了我一个“禁止”错误。
我一直在使用的可编译项目可用here
【问题讨论】:
-
你这样做是为了测试还是因为你想在后台模拟用户?
-
测试目的。我正在尝试学习如何使用 Java 填写表格。这是我能找到的最简单的网站/表格。欢迎使用不同网站的示例:)
-
如果是为了测试您的网站 onyl,您应该查看Selenium 而不是重新发明轮子。如果您确实需要在后台执行 GET/POST 请求(这非常罕见但可能会发生),那么您应该使用另一种技术,如 jsoup,它允许读取整个 HTML 并继续使用 URLConnection 或 Apache HttpComponents 来执行对服务器的请求。
-
我只需要能够从提交表单时打开的第二个网页中获取信息。我有使用 JSOUP 解析网页的经验,虽然我只需要能够下载它,但我不需要解析第二个网页。
-
有没有办法可以在不加载第一页的情况下下载第二页?那将是最理想的解决方案。
标签: java forms post urlconnection