www.text没有显示android中的完整数据
我正在使用以下代码从网页获取文本:
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获取与从台式机获取相同的内容。
谢谢。
实现tier1的答案。
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 headers = new Dictionary(); 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 headers = new Dictionary(); 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浏览器的请求。 您可以从此处获取User-Agent
。
您尝试获取的URL可能是检测到您的用户代理并将您发送到某个具有较小响应正文的移动网站。
我对您正在使用的库不是很熟悉,但您可能想尝试手动设置User-Agent标头。
例如:
User-Agent:像Gecko一样的Mozilla / 5.0(Windows NT 6.3; Trident / 7.0; rv:11.0)