我正在使用以下代码从网页中获取文本:
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 获取的内容相同的内容。
谢谢。
最佳答案
实现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<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
.
关于c# - www.text 未在 android 中显示完整数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41347749/