Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Java从响应网页获取文本_Java_Browser_Webpage - Fatal编程技术网

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

使用Java从响应网页获取文本,java,browser,webpage,Java,Browser,Webpage,我正在使用http向服务器发送命令,当前需要解析服务器发回的响应我正在通过命令行发送命令,服务器响应将显示在我的浏览器中 有很多这样的资源:,它们清楚地说明了如何抓取cnn.com这样的页面。然而,由于这是一个响应页面,只有当摄像机接收到特定命令时才会生成,因此我尝试使用Mike Deck在上面链接中描述的方法失败。具体来说,当我的程序再次请求页面时,服务器返回401错误 来自服务器的响应将在“我的浏览器”中打开一个新选项卡。本质上,我需要知道如何使用java保存当前网页,因为在文件中读取可能是

我正在使用http向服务器发送命令,当前需要解析服务器发回的响应我正在通过命令行发送命令,服务器响应将显示在我的浏览器中

有很多这样的资源:,它们清楚地说明了如何抓取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:更改请求以解决问题。

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

connection.setRequestMethod("POST");


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

您尝试过selenium吗?我没有。在我看来,这更多是为了测试,而我只是试图保存一个页面。selenium的用途是什么?是的,它实际上是浏览器测试的标准工具。它可以做的就像是人类在驾驶它。您也可以尝试使用来自apache的curl或http客户端。我正在尝试使用来自apache的http客户端,有几个地方推荐使用。这解决了我的401错误,但现在我似乎无法连接到外国IP地址。查看我的编辑
connection.setRequestMethod("GET");