Unity 报错之 java.net.MalformedURLException: unknown protocol

使用WWW获取信息时Android端报错:java.net.MalformedURLException: unknown protocol:报错网址

报错截图:

在这里插入图片描述

报错原因:访问的网址不正确,若是多打一个符号或者少打一个符号,运行Unity 或者 使用浏览器打开即可试出,网址是否正确。

我的错误:在Unity Editor下运行没有问题,可以正确访问,获取到想读取的数据:

    IEnumerator RequestShareLink()
    {
		WWW www = new WWW("www.youryuming.com");
        yield return www;
        if (www.error == null)
        {
            //打印出get请求回应内容
            Debug.Log("读取的内容:" + www.text );
        }
        else
        {
            Debug.Log("读取错误...");
        }
 	}
此方法在Unity Editor 下运行没有问题。结果在发布Android包测试时,并没有获取到在Editor下所获取的内容。
不知道你是否看出了上面代码的问题。细心的你或者是有过使用经验的你应该早就看出了问题, 就是在WWW类的构造函数中传递的url,需要是一个有效的链接地址,上面"www.youryuming.com"这个地址看起来也没有什么问题,若是有效的,它在浏览器中上也可以打开。其实这个url 是不完整的,之所以它可以被使用,是因为浏览器为我们默认加上了"http://",,,看到这里问题就很明确了。
解决问题:在传递参数是前面加上"http://",上面代码修改为:
    IEnumerator RequestShareLink()
    {
		WWW www = new WWW("http://www.youryuming.com");
        yield return www;
        if (www.error == null)
        {
            //打印出get请求回应内容
            Debug.Log("读取的内容:" + www.text );
        }
        else
        {
            Debug.Log("读取错误...");
        }
 	}
其实在实际开发汇总这样的错应该都不会犯,只是若上面放写成公用的带url参数的方法的时候,这样就需要大家商量好了,传递的参数是否带有"http://"这个头了,,或者在这个调用www构造方法前,校验一下传递的链接字符串的是否是以"http://"开头的,,若是则校验通过,若不是则在字符串前面添加后再传递个www去访问,这样就可以避免 java.net.MalformedURLException这个报错了。


使用www时你是否还遇到过其他的坑,欢迎留言评论哦!!!
发布了446 篇原创文章 · 获赞 630 · 访问量 50万+

猜你喜欢

转载自blog.csdn.net/Czhenya/article/details/93017760