使用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)
{
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)
{
Debug.Log("读取的内容:" + www.text );
}
else
{
Debug.Log("读取错误...");
}
}
其实在实际开发汇总这样的错应该都不会犯,只是若上面放写成公用的带url参数的方法的时候,这样就需要大家商量好了,传递的参数是否带有"http://"这个头了,,或者在这个调用www构造方法前,校验一下传递的链接字符串的是否是以"http://"开头的,,若是则校验通过,若不是则在字符串前面添加后再传递个www去访问,这样就可以避免 java.net.MalformedURLException这个报错了。
使用www时你是否还遇到过其他的坑,欢迎留言评论哦!!!