2016-07-12 9 views
0

現在、私は奇妙な問題に直面していました。自分のインターネット接続をオフにして、処理コードを自分の上に置きます。私はそれが私にいくつかのエラーコードを返すと思ったが、ただ例外を表示するのではなく空白の応答を与える。画面上に詳細を印刷すると、デバッグ出力が表示されます。Webサーバーからの空白応答の処理

enter image description here

基本的に私は、インターネット接続がない場合、ダイアログボックスを表示します。しかし、どのようにこの状況を処理する!

サーバー側から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); 
    } 

私はこれにいくつかの提案をしてください。もっと情報が必要な場合は、私は利用可能です。

答えて

0

インターネット接続が無効になっているかどうかを確認したいのは、ユーザーにメッセージを表示することです。例えば、あなたはこのようなものを書くことができます。

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 
    })); 
} 
+0

上記のソースコードは、私のコードで参照する必要があるif文のどの部分が真になっているかで動作しません。 www.errorは私の応答ではnullなので、間違いなくあなたのインターネット接続のチェックコードが私に間違った返答を与えてしまいます。 – Siddharth

+0

if文を逆順にするだけで、必要なら実際にあなたが言ったことはほとんど理解できません。 – Everts

+0

if-else文のどの部分を実行すれば、より明確なアイデアがあるか考えてみてください。もし私のインターネットがうまくいかなかったら、それは私にwww.error!= nullを与えてくれるはずですが、現時点では逆にwww.error == nullがtrueになっています。だから私はこれも混乱している! – Siddharth

0

あなたは間違ったURLを持っています。あなたはjsonファイルを取得していると思いますが、実際にはHTMLページを取得しています。

は、たとえば、あなたはgithubの上のJSONファイルを保存する場合:これはブラウザ内のコンテンツをチェックするためのURLがあるので

https://github.com/name/reponame/blob/master/folder/data.json

が、これはHTMLをダウンロードしています。

https://raw.githubusercontent.com/name/reponame/blob/master/folder/data.json

とテキストファイルが実際に格納されている場所です。

あなたの場合、おそらく同様の問題があります。 jsonファイルが必要な間に、HTMLコンテンツが表示されます。これは警告で、不適切なjsonとHTMLファイルの開始を表示します。

有効な接続は、目的のための有効なURLではありません。

+0

私は私のインターネット接続をもう一度開始すると、すべてが正常にインターネット接続を停止し、同じ時にUnity Editorに同じ結果を出力しています。 – Siddharth