[英]Handle Blank Response From Web Server
目前,我面临着某种奇怪的问题。 我关闭了互联网连接,在其上放置了一些处理代码。 我以为它将返回一些错误代码,但它只会给我空的响应,而不是显示异常。 当我在屏幕上打印更多详细信息时,得到了以下调试输出。
基本上,我想在没有互联网连接时显示对话框。 但是如何处理这种情况!!!
因为没有来自服务器端的json响应,所以我也从服务器接收到一些字节。 这是我的代码:
Dictionary<string,string> headerDisc = new Dictionary<string, string> ();
headerDisc.Add ("Api-Key", "You API Key");
WWW www = new WWW (GameConstants.CONTESTANT_LIST_BASE_URL, new byte[] { (byte)0 }, headerDisc);
yield return www;
if (www.error == null) {
Debug.Log ("bytes: " + www.bytes.Length);
Debug.Log ("size: " + www.size);
Debug.Log ("length: " + www.text.Length);
Debug.Log ("Data: " + www.text);
if (www.text.Length <= 0) {
AppManager.Instance.DialogMessage = "No Server Response Found!";
Camera.main.SendMessage ("ActivateDialogBoxPanel", true, SendMessageOptions.DontRequireReceiver);
} else {
JSONObject jsonObj = new JSONObject (www.text);
JSONObject messageObj = jsonObj [TAG_MESSAGE];
string successValueStr = jsonObj [TAG_SUCCESS].ToString ();
if (successValueStr.Equals (VALUE_TRUE))
// success
else
// fail
}
} else {
Debug.Log ("Error: " + www.error);
AppManager.Instance.DialogMessage = "Error:" + www.error;
Camera.main.SendMessage ("ActivateDialogBoxPanel", true, SendMessageOptions.DontRequireReceiver);
}
请给我一些建议。 如果您需要更多信息,请联系我。
据我了解,您想检查是否已禁用Internet连接,向用户显示一条消息。 例如,您可以编写这样的内容。
IEnumerator checkInternetConnection(Action<bool> action){
WWW www = new WWW("http://google.com");
yield return www;
if (www.error != null) {
action (false);
} else {
action (true);
}
}
然后在您的Start()函数中编写此代码。
void Start(){
StartCoroutine(checkInternetConnection((isConnected)=>{
// handle connection status here
}));
}
您输入的网址错误。 您认为您正在获取json文件,但实际上您正在获取HTML页面。
例如,如果您将json文件存储在github上:
https://github.com/name/reponame/blob/master/folder/data.json
这是下载html,因为这是用于检查浏览器中内容的url。
https://raw.githubusercontent.com/name/reponame/blob/master/folder/data.json
这是文本文件的实际存储位置。
就您而言,您可能有类似的问题。 您需要json文件时就可以获取HTML内容。 这就是警告的意思,不正确的json并显示HTML文件的开头。
因此,您确实有一个有效的连接,但不是一个有效的URL。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.