2011-09-13 65 views
1

我正在研究一個示例應用程序,以便能夠將簡單的html數據加載到webview中而不會扭曲內容。在我的Activity中,我使用org.apache.http包連接到一個網站,並在私有方法openGoogleHomePage()中檢索它的內容。在WebView中加載html數據

DefaultHttpClient client = new DefaultHttpClient(); 
HttpGet get = new HttpGet("http://www.google.com"); 

get.setHeader("Content-Type", "application/x-www-form-urlencoded"); 
get.setHeader("User-Agent","Mozilla/5.0 (Linux; U; Android 2.1-update1; de-de; HTC Desire 1.19.161.5 Build/ERE27) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17"); 

HttpResponse response = client.execute(get); 

String data = new BasicResponseHandler().handleResponse(response); 
data = data.replaceAll("%", "%"); 
return data; 

當我比較「數據」到時在Firefox瀏覽器中打開http://www.google.com實際html內容響應,內容是一樣的。但是,當我嘗試將這個'數據'加載到webview中時,我沒有看到任何類似的東西。

LinearLayout layout = (LinearLayout) View.inflate(this, R.layout.main, null); 
    setContentView(layout); 
WebView browser = (WebView) layout.findViewById(R.id.webPage); 

browserSettings = browser.getSettings(); 
browserSettings.setJavaScriptCanOpenWindowsAutomatically(true); 
browserSettings.setJavaScriptEnabled(true); 
browserSettings.setSavePassword(false); 
browserSettings.setSaveFormData(false); 
browserSettings.setSupportZoom(false); 

browser.setWebViewClient(new WebViewClient() { 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 
     return false; 
    } 
}); 

String htmlData = openGoogleHomePage(); 
if (htmlData != null) { 
    browser.loadData(htmlData, "text/html", HTTP.UTF_8); 
} 

Whatelse我要在我的代碼更改爲能夠查看完全按照我在PC上的瀏覽器做的WebView?另一方面,如果不經歷使用http包調用URL的艱辛過程,而是使用webview.loadUrl(「http://www.gooogle.com」)調用webview中的url,當然會檢索移動版本的搜索巨頭的網頁,這是不同於PC瀏覽器版本。

簡而言之,我想在我的webview中看到在我的本地自定義代碼中處理http調用後,我在PC瀏覽器中看到的究竟是什麼。

另外,如果有人可以在處理url重定向時顯示一些指針,那將有很大的幫助。

+0

你可以保存到一個文件並使webview指向它:D – PedroAGSantos

回答

1

某些移動設備檢測可能基於用戶代理。 嘗試在WebView中設置UserAgent以通過向WebView添加一個更多設置來使用Desktop對象。

browserSettings.setUserAgentString("Mozilla/5.0");