在钛移动应用程序代码中调用webservice总是返回状态码为0的响应

时间:2012-11-28 08:18:18

标签: rest mobile titanium httpclient titanium-mobile

我是钛appcelerator家族的新手。此外,我不确定是否有人之前发布了同样的问题。我找不到它,所以在这里张贴。

我正在开发一个移动应用程序。在我的应用程序中,我试图调用一个托管在我的本地环境中的Web服务,但它始终返回状态代码为0的响应和错误消息“无法访问主机”。所以我认为我部署在远程位置的Web服务应该存在一些问题。因此我试图打电话给其他一些像Twitter这样的网络服务,但它也是一样.. :(在调用推特网络服务的同时给我一个错误。

我还检查了跨域策略问题。所以我也尝试在服务器上为Web服务设置规则,但它没有成功。以下是我正在使用的代码段和环境详细信息。

  1. 申请类型移动
  2. Titanium SDK: 2.1.4 GA
  3. 设备:网络浏览器
  4. 主机操作系统:Windows 7
  5. Titanium Studio: Titanium Studio,版本:2.1.2.201208301612
  6. 我正在呼叫的示例Web服务的文件存在于以下位置:

    1. http://db.tt/XoSCujux (api.php)
    2. http://db.tt/bJG2A5XT (Rest.inc.php)
    3. http://db.tt/Hxt6Oojx (.htaccess)
    4. 代码:

      //declare the http client object
                  var xhr = Titanium.Network.createHTTPClient();
      
                  //this method will process the remote data
                  xhr.onload = function() { 
                      //check to see if we are refreshing the data via our 
                      //pull and release mechanism
      
                      //create a json object using the JSON.PARSE function
                      result = JSON.parse(this.responseText);
      
                      Ti.API.info(result);
                      console.log(result);
      
                      var msgTitle = "data:";
                      var msgText = result;
                      var alertBox = Ti.UI.createAlertDialog({
                                  title: msgTitle,
                                  message: msgText
                              });
                      alertBox.show();    
                  };  
      
      
                  //this method will fire if there's an error in accessing the remote data
                  xhr.onerror = function(e) {  
                      //log the error to our titanium developer console 
                      Ti.API.error(this.status + ' - ' + this.statusText);
                      console.log(this.status + ' - ' + this.statusText); 
      
      
      
                      var msgTitle = "Error : " + this.status;
                      var msgText = "Error Text : " + this.statusText;
                      var alertBox = Ti.UI.createAlertDialog({
                                  title: msgTitle,
                                  message: msgText
                              });
                      alertBox.show();    
      
                       Ti.API.debug("STATUS: " + this.status);
                          Ti.API.debug("TEXT:   " + this.responseText);
                          Ti.API.debug("ERROR:  " + e.error);
                          alert('There was an error retrieving the remote data. Try again.' +  e.error);
                  };  
      
                  //open up the recipes xml feed
                  xhr.open("POST", "http://127.0.0.1/rest_example/api.php?rquest=locations");
      
                  //finally, execute the call to the remote feed
                  xhr.send();
      

      任何帮助都会非常感激。

0 个答案:

没有答案