2011-07-20 85 views
1

我正在創建一個涉及WebView的應用程序。問題是我想加載整個頁面而不是移動頁面,所以我更改了用戶代理。儘管如此,還是有加載移動版本的頁面。Android WebView完整頁面

這裏有兩個代碼版本,我曾嘗試:

1.webview.getSettings().setUserAgentString("Mozila ");
2. String DESKTOP_USERAGENT = webview.getSettings().getUserAgentString(); DESKTOP_USERAGENT = DESKTOP_USERAGENT.replace("Mobile ",""); webview.getSettings().setUserAgentString(DESKTOP_USERAGENT);

這是加載在任何情況下,移動版網頁exemples:

http://www.jurnalul.ro HTTP:// WWW。 androidzoom.com

1.有誰知道我怎麼欺騙服務器,告訴他我使用的是桌面而不是手機? 2.網站如何知道我正在使用移動版本?

非常感謝你, 勒茲萬

+0

您是否嘗試複製整個用戶代理而不是修改已有的代理? –

+0

是的,我已經嘗試和相同的情況。 –

回答

2

的問題可能是,如果你正在使用您的運營商是通過代理路由所有的HTTP請求的設備,並且該代理正在改變用戶代理。使用nc -l 80 -vvv檢查另一端,使用您自己的服務器,您的請求確實正在發送您已修改的User-Agent。

編輯:一些具體的故障排除步驟

  1. 轉發端口9090路由器到您的臺式機或筆記本電腦上。
  2. 下載netcat
  3. 運行netcat的使用命令「nc -l 9090 -vvv
  4. 在你的Android應用程序的WebView,使得與用戶代理HTTP請求您注射到http://your.ip.address:9090
  5. 在你的netcat跑終端,你將以純文本形式查看HTTP請求轉儲。在那裏你可以檢查HTTP頭User-Agent,看它是否被代理服務器改變了。

你不能用Wireshark或Fiddler測試這些東西,因爲它在廣域網中發生。您需要在接收端進行測試,無論是在服務器上,還是在您自己的臺式機上。

+0

這是一般情況。當我使用手機瀏覽器進入這些網站時情況相同。直到現在這個只爲這2個網站發生。對於www.google.ro等其他網站,www.earthcam.com si的工作方式應該是這樣。我在http://detectmobilebrowser.com/上進行了測試,結果是我使用的是桌面用戶代理。 –

+0

你可以通過使用nc命令發佈整個HTTP請求嗎?此外,這些網站上可能會有基於JavaScript的重定向。 –

+0

它跨越了我的想法,可能是頁面上的Javascript獲取屏幕大小,因此將重定向到移動版本,所以我已禁用Javascript,但仍然沒有。我不確定你在通過使用nc命令看到整個HTTP請求嗎?「 –

1
webview.getSettings().setUserAgent(1);//for desktop 1 or mobil 0. 
+0

設置.setUserAgent不存在。 –

+0

是的,它看起來像是由SDK17刪除。 http://developer.android.com/sdk/api_diff/17/changes/android.webkit.WebSettings.html – Voidcode