ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

android设备上的WWW.text返回null

2019-11-11 16:17:57  阅读:303  来源: 互联网

标签:unity3d request httprequest c android


我正在使用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),最好添加用户代理标头,或者期望发布应用后某些设备上的请求失败.

标签:unity3d,request,httprequest,c,android
来源: https://codeday.me/bug/20191111/2021079.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有