我使用http向服務器發送命令,而我當前需要解析服務器發回的響應(我通過命令行發送命令,服務器響應出現在我的瀏覽器中)。使用Java從響應網頁獲取文本
這裏有很多資源:Saving a web page to a file in Java,它清楚地說明了如何刮取cnn.com等頁面。但是,由於這是一個僅在攝像機收到特定命令時才生成的響應頁面,因此我嘗試使用Mike Deck(在上面的鏈接中)中描述的方法遇到了故障。 (具體來說,當我的程序再次請求頁面時,服務器返回401錯誤。)
服務器的響應會在我的瀏覽器中打開一個新選項卡。從本質上講,我需要知道如何使用java保存當前網頁,因爲讀入文件可能是最簡單的方法。你們有沒有人知道如何做到這一點?
TL; DR如何將當前網頁保存爲使用java的webpage.html或webpage.txt文件?
編輯:我使用Apache公用編解碼器的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:更改請求到得到解決的問題。
你試過硒嗎? – Jayan
我沒有。在我看來,這是更多的測試,而我試圖簡單地保存一個頁面。什麼是硒用於? – austinthemassive
是的,它是瀏覽器測試的事實標準工具。它可以像人類駕駛它一樣。你也可以從apache嘗試curl或http-client。 – Jayan