2013-07-30 107 views
1

我使用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:更改請求到得到解決的問題。

+0

你試過硒嗎? – Jayan

+0

我沒有。在我看來,這是更多的測試,而我試圖簡單地保存一個頁面。什麼是硒用於? – austinthemassive

+0

是的,它是瀏覽器測試的事實標準工具。它可以像人類駕駛它一樣。你也可以從apache嘗試curl或http-client。 – Jayan

回答

0

因此,儘管上述審閱我的代碼,我決定改變

connection.setRequestMethod("POST"); 

connection.setRequestMethod("GET"); 

這解決了我的問題。事後看來,我認爲服務器沒有識別HTTP,因爲它沒有設置爲處理與帖子一起出現的各種服飾。