使用Java从响应网页获取文本
我正在使用http向服务器发送命令,当前需要解析服务器发回的响应我正在通过命令行发送命令,服务器响应将显示在我的浏览器中 有很多这样的资源:,它们清楚地说明了如何抓取cnn.com这样的页面。然而,由于这是一个响应页面,只有当摄像机接收到特定命令时才会生成,因此我尝试使用Mike Deck在上面链接中描述的方法失败。具体来说,当我的程序再次请求页面时,服务器返回401错误 来自服务器的响应将在“我的浏览器”中打开一个新选项卡。本质上,我需要知道如何使用java保存当前网页,因为在文件中读取可能是最简单的方法。你们知道怎么做吗 TL;DR如何使用java将当前网页保存到webpage.html或webpage.txt文件 编辑:我使用了Apache commons编解码器中的Base64,它解决了我的401身份验证问题。然而,当我尝试连接我的InputStream时,仍然会出现400错误,请参见下文。这是否意味着一开始就没有建立连接使用Java从响应网页获取文本,java,browser,webpage,Java,Browser,Webpage,我正在使用http向服务器发送命令,当前需要解析服务器发回的响应我正在通过命令行发送命令,服务器响应将显示在我的浏览器中 有很多这样的资源:,它们清楚地说明了如何抓取cnn.com这样的页面。然而,由于这是一个响应页面,只有当摄像机接收到特定命令时才会生成,因此我尝试使用Mike Deck在上面链接中描述的方法失败。具体来说,当我的程序再次请求页面时,服务器返回401错误 来自服务器的响应将在“我的浏览器”中打开一个新选项卡。本质上,我需要知道如何使用java保存当前网页,因为在文件中读取可能是
URL url = new URL ("http://"+ipAddress+"/axis-cgi/record/record.cgi?diskid=SD_DISK");
byte[] encodedBytes = Base64.encodeBase64("root:pass".getBytes());
String encoding = new String (encodedBytes);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("POST");
connection.setDoInput (true);
connection.setRequestProperty ("Authorization", "Basic " + encoding);
connection.connect();
InputStream content = (InputStream)connection.getInputStream();
BufferedReader in = new BufferedReader (new InputStreamReader (content));
String line;
while ((line = in.readLine()) != null) {
System.out.println(line);
}
编辑2:更改请求以解决问题。因此,在仔细检查上面的代码时,我决定更改
connection.setRequestMethod("POST");
到
这解决了我的问题。事后来看,我认为服务器没有识别HTTP,因为它没有设置为处理post附带的各种陷阱。您尝试过selenium吗?我没有。在我看来,这更多是为了测试,而我只是试图保存一个页面。selenium的用途是什么?是的,它实际上是浏览器测试的标准工具。它可以做的就像是人类在驾驶它。您也可以尝试使用来自apache的curl或http客户端。我正在尝试使用来自apache的http客户端,有几个地方推荐使用。这解决了我的401错误,但现在我似乎无法连接到外国IP地址。查看我的编辑
connection.setRequestMethod("GET");