无法从移动电话强制网站网址找到XML Feed网址,以使用主版本而非移动版本

时间:2013-01-26 19:07:39

标签: xml dom web rss feed

我创建了一个java程序,它调用并使用来自http://www.somewhereinblog.net/indexblog/rss的xml提要并且工作正常。

但是当我制作一个Android版并调用它时,程序找不到主机, 因为这个站点的移动版本是m.somewhereinblog.net,每当我尝试调用feed url时,它会自动更改其url并转到m.somewhereinblog.net/indexblog/rss 哪个没有饲料。

那我怎么能强迫我的手机不拨打移动版?任何想法或帮助请

1 个答案:

答案 0 :(得分:1)

网站根据收到的用户代理标题重定向您的Android程序。解决方法:在检索订阅源时发送桌面用户代理标头。有关用户代理标头的详尽列表,请查看http://www.useragentstring.com/pages/useragentstring.php

根据您的意见 - 这是一个澄清。当浏览器连接到Web服务器时,它会在其标头中发送User-Agent字符串。 User-Agent标识客户端请求,通常指定操作系统,它正在使用的浏览器版本等等。

例如,运行Android的移动浏览器可能将自己标识为:

User-Agent: Mozilla/5.0 (Linux; U; Android 2.2.1; en-ca; LG-P505R Build/FRG83) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1

Windows 8上的桌面浏览器可能会发送如下内容:

User-Agent: Mozilla/6.0 (Windows NT 6.2; WOW64; rv:16.0.1) Gecko/20121011 Firefox/16.0.1

请注意,在上面的示例中,User-Agent包含有关操作系统的信息以及发起请求的浏览器的版本和名称。 Web服务器使用此信息来确定应该提供哪些页面。

由于Android上的程序在请求Feed时被重定向到移动页面,因此您在Android上用于生成请求的API极有可能发送用户代理字符串,将其标识为移动设备。

解决方法是覆盖在标头中发送的User-Agent字符串,以便Web服务器认为请求来自桌面系统。这就是我将链接发布到User-Agent字符串列表的原因 - 这样您就可以选择并测试不同的设置。

总结一下 - 您不需要请求其他URL - 请求来自与桌面版相同的URL的订阅源,但要确保传递给Web服务器的标头中的User-Agent字符串将请求标识为来自桌面浏览器而非移动版浏览器,以避免被重定向到移动版本。