2017-01-16 4 views
0

JSONから自分の情報を取得しようとするたびにエラーが発生します。HTTPClient呼び出しがAppcelerator Titaniumアプリケーションの正しいJSONデータを返さない

function buscar(e){ 
    var url = 'https://www.dotscancun.com/createjson.php?id=100001'; 
    var xhr = Ti.Network.HTTPClient({ 
    onerror: function(e){ 
     Ti.API.info(this.responseText); 
     Ti.API.info(this.status); 
     Ti.API.info(e.error); 
     }, 
     timeout: 5000 
    }); 
    xhr.open('GET',url); 
    xhr.send(); 
    xhr.onload = function(){ 
     var json = JSON.parse(this.responseText); 
     alert(json); 
    }; 
}; 

これはコードです。

エラーは次のとおりです。

[LiveView] Client connected 
[ERROR] : TiHTTPClient: (TiHttpClient-8) [1340,1340] HTTP Error (java.io.IOException): 404 : Not Found 
[ERROR] : TiHTTPClient: java.io.IOException: 404 : Not Found 
[ERROR] : TiHTTPClient: at ti.modules.titanium.network.TiHTTPClient$ClientRunnable.run(TiHTTPClient.java:1217) 
[ERROR] : TiHTTPClient: at java.lang.Thread.run(Thread.java:818) 

エラー404それは間違っているものを、ウェブサイトのdidntが存在していますが、URLをコピーする場合、それが動作することを意味しますか?

答えて

0

質問に投稿したエラーメッセージは、JSONクエリとは関係ありません。 Android搭載デバイスのログ出力に関連しています。だから、あなたは単にその呼び出しを無視することができます。

ので、あなたはそれが間違ってコーディングしている:あなたは正しいHTTPClientのオブジェクトを作成していない

  • 。あなたはTi.Network.HTTPClient代わりのTi.Network.createHTTPClient方法はオープン()呼び出し前に定義する必要があります
  • のonloadを使用しています。

はここにあなたの質問のための正しいコードです:

function buscar(e){ 
    var url = 'https://www.dotscancun.com/createjson.php?id=100001'; 

    var xhr = Ti.Network.createHTTPClient({ 
     onerror: function(e){ 
      Ti.API.info(this.responseText); 
      Ti.API.info(this.status); 
      Ti.API.info(e.error); 
     }, 

     timeout: 5000, 

     onload : function(){ 
      alert(this.responseText); 

      // parse it for further use 
      var tempJSON = JSON.parse(this.responseText); 
     } 
    }); 

    xhr.open('GET',url); 
    xhr.send(); 
} 
+0

要求は何のJSONを返していない時にアプリがクラッシュすることに注意してください。 tryとcatchを使用してJSONを解析するヘルパ関数を作成します。これはずっと安全です。 – Garre

+0

@Gerben、ええ、しかし、そのユーザーにクライアント呼び出しを使用する方法の明確でシンプルな考えを与えるためにコードで言及していませんでした。私は彼が自分でtry-catchを使うことができると信じています。だから、タイムアウトを削除しなかったのは、画像が5秒以内にダウンロードされることが必ずしもわからないためです。 –

関連する問題