我希望通过Java编程语言访问HTMl页面上的表单,而不需要介于两者之间的真实浏览器。
目前我正在通过HTML UNIT进行此操作,但加载页面需要更多时间。当涉及访问数百万页时,这个额外的位时间最重要。
还有其他方法吗?
答案 0 :(得分:2)
之前我曾使用类似名为httpunit的东西,但我不知道它是如何比较性能的。
如果您要处理数百万个页面,我建议您再添加一些页面。只是一个猜测,但我认为,如果你把它扩展到多个线程,你将耗尽带宽,然后你的CPU功率耗尽(在这种情况下,它可能会更快多少)
答案 1 :(得分:0)
使用浏览器(甚至是HtmlUnit)访问网页的速度会很慢。更好的方法是test the layer just below the web interface,这样您就不需要访问数百万个页面 - 而是进行足够的测试以确保Web界面正确使用较低层。
答案 2 :(得分:0)
浏览器中的大多数交互都归结为HTTP GET或HTTP POST。 您需要确切地确定所需的操作,然后才能构建URL和/或表单数据。 Then you can use something like this:
try {
//Construct data
String data = URLEncoder.encode("key1", "UTF-8") + "=" + URLEncoder.encode("value1", "UTF-8"); data += "&" + URLEncoder.encode("key2", "UTF-8") + "=" + URLEncoder.encode("value2", "UTF-8");
// Send data
URL url = new URL("http://hostname:80/cgi");
URLConnection conn = url.openConnection(); conn.setDoOutput(true);
OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
wr.write(data);
wr.flush();
// Get the response
BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line; while ((line = rd.readLine()) != null) {
// Process line... }
wr.close();
rd.close();
} catch (Exception e) { }