gpt4 book ai didi

java - 使用 Java 从响应网页获取文本

转载 作者:行者123 更新时间:2023-12-01 04:31:19 26 4
gpt4 key购买 nike

我正在使用 http 向服务器发送命令,当前需要解析服务器发回的响应(我通过命令行发送命令,服务器响应出现在我的浏览器中)。

有很多资源,例如:Saving a web page to a file in Java ,清楚地说明了如何抓取 cnn.com 等页面。然而,由于这是一个仅在相机收到特定命令时生成的响应页面,因此我尝试使用 Mike Deck(在上面的链接中)描述的方法失败了。 (具体来说,当我的程序再次请求该页面时,服务器返回 401 错误。)

服务器的响应在我的浏览器中打开一个新选项卡。本质上,我需要知道如何使用 java 保存当前网页,因为读取文件可能是实现此目的的最简单方法。你们有人知道如何做到这一点吗?

TL;DR 如何使用java将当前网页保存到webpage.html或webpage.txt文件中?

编辑:我使用了 Apache commons 编解码器中的 Base64,它解决了我的 401 身份验证问题。但是,当我尝试连接 InputStream 时,仍然收到 400 错误(见下文)。这是否意味着连接一开始就没有建立?

    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:将请求更改为 GET 解决了问题。

最佳答案

因此,在仔细检查上面的代码时,我决定更改

connection.setRequestMethod("POST");

connection.setRequestMethod("GET");

这解决了我的问题。事后看来,我认为服务器无法识别 HTTP,因为它没有设置为处理 post 附带的各种陷阱。

关于java - 使用 Java 从响应网页获取文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17952399/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com