2012-10-24 53 views
0

我的要求是做Web應用程序來獲取目標內容,並且必須通過使用HttpURLConnection添加請求標頭。Java HttpURLConnection獲取所有內容包括CSS,IMG等

我使用此代碼

try{ 
     String urlStr = "http://test/STAM/Login"; 

     url = new URL(urlStr); 
     urlconn = (HttpURLConnection)url.openConnection(); 
     urlconn.setRequestProperty("Accept-Language","en-us,en;q=0.5"); 
     urlconn.setRequestProperty("Accept-Charset","ISO-8859-1,utf-8;q=0.7,*;q=0.7"); 
     urlconn.setRequestProperty("User-Agent","Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.16) Gecko/20110319 Firefox/3.6.16"); 

     urlconn.connect(); 
     //read the result from the server 
     rd = new BufferedReader(new InputStreamReader(urlconn.getInputStream())); 
     sb = new StringBuilder(); 
     while ((line = rd.readLine()) != null) 
     { 
      sb.append(line + '\n'); 
     } 

     out.println(sb.toString()); 

    } catch(Exception e) { 
     e.printStackTrace(); 
    } finally { 
    //close the connection, set all objects to null 
     urlconn.disconnect(); 
     rd = null; 
     sb = null; 
     wr = null; 
     urlconn = null; 
    } 

結果是: 我的代碼將獲得唯一來源的內容,但無法得到的CSS,圖像文件,JavaScript和等等,因爲它會從本地主機,如「HTTP負載: //localhost:8080/test/img/test.gif「而不是」http://test/STAM/img/test.gif「。請告訴我,如果我錯了,或者您有任何方法來解決這個問題。

非常感謝。

+1

你期望看到什麼? –

+0

我希望通過使用HttpURLConnection從目標網站中看到完整內容(文本,圖像)。謝謝 – user1770473

+0

全文是什麼意思?就像你在瀏覽器中看到的頁面一樣? –

回答

2

根據我的理解,當您獲取html頁面時,您希望獲取頁面(css/js/images/...)中使用的所有資源。

如您所知,HTML是引用外部資源的標記語言。這是Web瀏覽器作業來獲取所有這些資源並呈現頁面。如果你想擁有所有的資源,那麼你應該解析源內容來提取資源鏈接並單獨獲取它們。

如果您想要從原始位置重新使用資源,您必須注意資源URL仍可從打開頁面的位置到達。 (URL could be absolute or relative

1

不要使用HttpUrlConnection來執行此操作。您將最終解析html文件來解決已解決的問題。

使用:HttpClient