www.text 未在 android 中显示完整数据

Posted

技术标签:

【中文标题】www.text 未在 android 中显示完整数据【英文标题】:www.text not showing complete data in android 【发布时间】:2017-05-11 21:25:28 【问题描述】:

我正在使用以下代码从网页中获取文本:

    private IEnumerator FetchText() 
        WWW www = new WWW(URL);

        yield return www;

        if(www.error == null) 
            myText.text = www.text.Length.ToString();
        
        ...
    

当我在 Unity 中运行它时,我得到 185616 字符长字符串。但是当我在 android 设备上运行它时,我只得到47133 字符。是因为该网页在 Windows 和 Android 中的行为不同吗?如果是,我如何从 android 获取与从台式 PC 获取相同的内容。

谢谢。

【问题讨论】:

问题很可能是检测到您的用户代理的网站/网络服务。他们还可以使用其他标题来更改响应。此代码在编辑器中有效吗? 是的,它可以在编辑器中使用。 您可以发布网址吗?如果是这样,请照原样发布。 我无法发布网址,但我可以确认,当我在 PC 中打开该页面时,视图有所不同。当我在我的安卓手机中打开它时,页面会小得多,视图不同。 网址是否包含用户名和密码?如果不是,那么问题很可能是tier1 所说的。 【参考方案1】:

tier1's answer的实现。

POST 请求

private IEnumerator FetchText()

    string URL = "www.yahoo.com";
    string userAgent = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (Khtml, like Gecko) Chrome/55.0.2883.87 Safari/537.36";

    Dictionary<string, string> headers = new Dictionary<string, string>();
    headers.Add("User-Agent", userAgent);
    string postData = "test";
    string data = "data=" + postData;

    WWW www = new WWW(URL, Encoding.UTF8.GetBytes(data), headers);
    yield return www;


    if (string.IsNullOrEmpty(www.error))
    
        //myText.text = www.text.Length.ToString();
        Debug.Log("Got: " + www.text);
    
    else
    
        Debug.Log("Error: " + www.error);
    

GET 请求

WWW byte[] postData 参数设置为 null 将使其成为 GET 请求。

private IEnumerator FetchText()


    string userAgent = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36";
    string URL = "www.yahoo.com";

    Dictionary<string, string> headers = new Dictionary<string, string>();
    headers.Add("User-Agent", userAgent);

    WWW www = new WWW(URL, null, headers);
    yield return www;


    if (string.IsNullOrEmpty(www.error))
    
        //myText.text = www.text.Length.ToString();
        Debug.Log("Got: " + www.text);
    
    else
    
        Debug.Log("Error: " + www.error);
    

根据您的原始代码,您需要 GET 请求方法。这将伪装成来自 Chrome 浏览器的请求。您可以从here 获取您的User-Agent

【讨论】:

我现在就试试,然后告诉你。 我想你可以帮助我:***.com/questions/41885413/…【参考方案2】:

您尝试获取的 URL 可能正在检测您的用户代理并将您发送到某种响应正文较小的移动网站。

我对您使用的库不是很熟悉,但您可能想尝试手动设置 User-Agent 标头。

例如:

用户代理:Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) 像 Gecko

【讨论】:

我会尝试并回复您。

以上是关于www.text 未在 android 中显示完整数据的主要内容,如果未能解决你的问题,请参考以下文章

位图图像未在viewpager android中显示

更新的 json 数据未在 android 中显示

Listview 项目未在 Fragment Android 中显示

权限未在android中显示(相机权限)没有错误

推送通知未在 Android 前台显示

视图未在 Android 的相对布局中显示 [重复]