Unity 之 使用UnityWebRequest.Get(“0“)结果得到“Accept“的问题记录
Posted 陈言必行
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity 之 使用UnityWebRequest.Get(“0“)结果得到“Accept“的问题记录相关的知识,希望对你有一定的参考价值。
一,出现问题
在使用下面这个协程时,传值是“0” ,正常的测试结果request.isNetworkError
为True 结束协程:
报错代码:
IEnumerator GetUrlData(string url)
{
Debug.Log("GetADImageList url: " + url);
UnityWebRequest request = UnityWebRequest.Get(url);
yield return request.SendWebRequest();
if (request.isHttpError || request.isNetworkError)
{
yield break;
}
if (string.IsNullOrEmpty(request.downloadHandler.text))
{
yield break;
}
JsonData data = JsonMapper.ToObject(request.downloadHandler.text);
// todo...
}
二,报错信息:
在真机Oppo R9 上出现的问题,在其他机型的手机没有出现这个问题:
>GetADImageList url: 0
>GetADImageList IsNullOrEmpty Accept
>输出condition:JsonException: Invalid character 'A' in input string,输出stackTrace:LitJson.Lexer.NextToken () (at <00000000000000000000000000000000>:0)
LitJson.JsonReader.ReadToken () (at <00000000000000000000000000000000>:0)
LitJson.JsonReader.Read () (at <00000000000000000000000000000000>:0)
LitJson.JsonMapper.ReadValue (LitJson.WrapperFactory factory, LitJson.JsonReader reader) (at <00000000000000000000000000000000>:0)
LitJson.JsonMapper.ToObject (System.String json) (at <00000000000000000000000000000000>:0)
ADSDK+<GetADImageList>d__104.MoveNext () (at <00000000000000000000000000000000>:0)
UnityEngine.SetupCoroutine.InvokeMoveNext (System.Collections.IEnumerator enumerator, System.IntPtr returnValueAddress) (at <00000000000000000000000000000000>:0)
三,修正代码:
后来没有分析出原因,也没有找到解决方案,只能在后面使用获得结果的时候加个异常捕获:
IEnumerator GetUrlData(string url)
{
Debug.Log("GetADImageList url: " + url);
UnityWebRequest request = UnityWebRequest.Get(url);
yield return request.SendWebRequest();
if (request.isHttpError || request.isNetworkError)
{
yield break;
}
if (string.IsNullOrEmpty(request.downloadHandler.text))
{
yield break;
}
JsonData data;
try
{
data = JsonMapper.ToObject(request.downloadHandler.text);
}
catch (Exception e)
{
Debug.Log("GetADImageList request.downloadHandler.text: " + request.downloadHandler.text);
throw e;
}
// todo...
}
以上是关于Unity 之 使用UnityWebRequest.Get(“0“)结果得到“Accept“的问题记录的主要内容,如果未能解决你的问题,请参考以下文章
HttpClient 和 Unity 的 UnityWebRequest/WWW API 的区别
Unity Android 使用UnityWebRequest Post 数据后,没有获得服务器返回的数据
Unity 使用UnityWebRequest下载超大资源,实现断点续传和分段下载。
U3D客户端框架之实现基于UnityWebRequest的Http服务 实现HttpCallBackArgs参数类HttpRoutine访问器HttpManager管理器