2012-12-11 159 views
0

我正在嘗試創建一個簡單的Android應用程序,該應用程序可以獲取網站的源代碼。不管怎麼說,我寫了下面的:獲取網站源代碼時出錯

WebView webView = (WebView) findViewById(R.id.webView); 
try { 
    webView.setWebViewClient(new WebViewClient());   
    InputStream input = (InputStream) new URL(url.toString()).getContent(); 
    webView.loadDataWithBaseURL("", "<html><body><p>"+input.toString()+"</p></body></html>", "text/html", Encoding.UTF_8.toString(),""); 
    setContentView(webView); 
} catch (Exception e) { 
    Alert alert = new Alert(getApplicationContext(), 
          "Error fetching data", e.getMessage()); 
} 

我試圖改變3號線多次將獲取源代碼等方法,但他們都重定向我警報(錯誤,沒有消息,只有標題)。

我在做什麼錯?

回答

0

是否有一個特別的原因,你不能只是使用它來加載網頁?

webView.loadUrl("www.example.com"); 

如果你真的想抓住的源代碼轉換成字符串,所以你可以操縱它,當你正在嘗試做的顯示它,嘗試打開一個流的內容,然後用標準的Java方法來讀取數據到一個字符串,然後你可以做任何你想要的:

InputStream is = new URL("www.example.com").openStream(); 

InputStreamReader is = new InputStreamReader(in); 
StringBuilder sb = new StringBuilder(); 
BufferedReader br = new BufferedReader(is); 
String read = br.readLine(); 

while(read != null) { 
    sb.append(read); 
    read = br.readLine(); 
} 

String sourceCodeString = sb.toString(); 
webView.loadDataWithBaseURL("www.example.com/", "<html><body><p>"+sourceCodeString+"</p></body></html>", "text/html", Encoding.UTF_8.toString(),"about:blank"); 
+0

它仍然會提示「錯誤提取數據」...(我想顯示網頁源代碼,並將其作爲字符串在運行時,所以我可以用它來執行更多的任務) – funerr

+0

什麼是拋出的實際異常?如果您發佈了e.getMessage()字符串,我們可能會想出它。另外,我認爲您應該爲loadDataWithBaseURL添加第一個和最後一個參數,以便可以解析所有正確的路徑。我已經更新了我的答案,包括這個 – mattgmg1990

+0

1)發生「錯誤」時,e.getMessage()是空的。 2)我不想顯示example.com網站,而是它的源代碼,只是在webView中顯示(爲了便於功能)。 – funerr