【问题标题】:Force load mobile Youtube page?强制加载移动 Youtube 页面?
【发布时间】:2012-09-28 05:54:25
【问题描述】:

如何在移动版中加载 youtube 链接?例如,如果您在浏览器中加载此链接 (http://m.youtube.com/watch?v=06f67ru5tCI),它会加载移动版本,因为“m.”附加到 url 的 biginning 中。当您在普通桌面浏览器上加载链接时,这可以正常工作。每当我尝试在 Android 模拟器上以这种方式加载移动链接以从页面中提取一些数据时,它会自动重定向到链接的完整“桌面”版本,即使是“m.”。被附加到网址的开头。如何强制加载移动 Youtube 链接?

谢谢!

【问题讨论】:

    标签: java android youtube simulator


    【解决方案1】:

    一种方法是更改​​用户代理。例如:

    URLConnection con = ...
    con.setRequestProperty("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1");
    

    【讨论】:

    • 这确实有效。此外,在我尝试更改用户代理之前,由于被重定向到桌面版本,从页面挖掘的数据是错误的,但现在在尝试此操作后没有返回任何数据,并且我在 Logcat 中收到此错误:W/System.err(1100): java.util.NoSuchElementException 有什么想法吗?
    • 所以你是说在 only 添加con.setRequestProperty(...) 行之后会出错?
    • 是的,这是正确的...有什么想法吗?我从字面上复制并粘贴了您示例中的代码...
    • String fileLocationURLString = "http://m.youtube.com/watch?v=06f67ru5tCI"; URL fileLocationURL = new URL(fileLocationURLString); URLConnection mainURLConnection = fileLocationURL .openConnection(); mainURLConnection.setRequestProperty("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1"); mainNode = mainHTMLCleaner.clean(new InputStreamReader( mainURLConnection.getInputStream())); Object[] linkAddress = mainNode .evaluateXPath(LOCATION_XPATH);
    • if (linkAddress.length > 0) { for (int i = 0; i < linkAddress.length; i++) { TagNode linkAddressNode = (TagNode) linkAddress[i]; String info = linkAddressNode.getChildren() .iterator().next().toString().trim(); Log.i("FOUND IT", info); } }
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-22
    • 1970-01-01
    • 2017-06-30
    • 2013-05-14
    • 1970-01-01
    相关资源
    最近更新 更多