2011-07-20 57 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