微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

android设备上的WWW.text返回null

我正在使用Unity开发一个Android应用.但是我无法使用它连接到Internet服务器.
这给出了错误,这很不错:Application.internetReachability == NetworkReachability.NotReachable

但是,当尝试执行此代码段时:

IEnumerator testConnection() {
    Dictionary<string, string> header = new Dictionary<string, string>();
    string userAgent = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36";
    header.Add("User-Agent", userAgent);
    WWW www = new WWW("www.google.com", null, header);
    yield return www;
    // check for errors
    if (www.error == null) {
        util.debug("works");
    } else {
        // www.error and www.text both are empty
        util.debug("testing: WWW Error: " + www.error + www.text); 
    }
}

它可以通过统一编辑器和Windows可执行文件工作,但不能在我的Android设备(v 6)上运行
有已知的解决方案吗?

Ping似乎也可以工作:

IEnumerator PingGoogle() {
    Ping googPing  = new Ping("172.217.6.195");

    while (!googPing.isDone) {
        yield return googPing;
    }
    util.debug("ping works: " + googPing.time); //I reach this point with the app
}

所以我认为WWW类有问题吗?

Android版本:6.0.1

OxygenOS版本:3.5.6

Unity版本:5.6.0b3个人版(64位)

编辑:
我将Internet访问的PlayerSettings(据我所知是android清单)从“自动”更改为“需要”.没有成功

编辑2:
看来www.error一点都不为空.该消息刚刚被截断,因为它太长了,无法统一(我的错).错误是java.net.MalformedURLException:找不到协议:www.google.de.
因此,唯一缺少的是协议,即:http://.我从评论中尝试了建议的解决方案时发现了这个问题.

解决方法:

我对修改后的代码仍然无法正常运行进行了快速测试,并得到了以下运行时异常:

java.net.MalformedURLException: Protocol not found

遇到此类问题时,最好使用Android Monitor.

问题是您没有为URL加上http://或https://前缀. Android不支持功能,这就是为什么它可以在Editor上运行但不能在Android上运行的原因.

当您尝试将用户名和密码嵌入url时,也会发生相同的情况.例如http://username:password@example.com.

这将适用于Windows和编辑器,但不适用于Android,但适用于fix.

这应该工作:

IEnumerator testConnection()
{
    Dictionary<string, string> header = new Dictionary<string, string>();
    string userAgent = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36";
    header.Add("User-Agent", userAgent);
    WWW www = new WWW("http://www.google.com", null, header);
    yield return www;
    // check for errors
    if (www.error == null)
    {
        util.debug("works");
    }
    else
    {
        // www.error and www.text both are empty
        util.debug("testing: WWW Error: " + www.error + www.text);
    }
}

暗示:

当从Unity应用向不属于您的服务器发出Web请求时(http://www.google.com),最好添加用户代理标头,或者期望发布应用后某些设备上的请求失败.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐