2011-06-08 52 views
2

我正在使用Titanium框架编码登录页面并使用Android模拟器。 我需要验证用户。我正在使用下面提到的代码,但我得到“错误”警报。无法发送来自emulater的请求到WCF

var loginWindow = Titanium.UI.createWindow({ 
      backgroundColor: '#CCD0D3', 
      title: L('Login'), 
      fullscreen: false, 
      activity : { 
       onCreateOptionsMenu : function(e) { 
        var menu = e.menu; 
        var cancel = menu.add({ title : L('Cancel') }); 
        cancel.addEventListener('click', function(e) { 
         var alertDialog = Titanium.UI.createAlertDialog({ 
          title: 'Clicked', 
          message: 'Cancel was clicked', 
          buttonNames: ['OK'] 
         }); 
         alertDialog.show(); 
        }); 

        var login = menu.add({ title : L('Login') }); 

        login.addEventListener('click',function(e) 
        { 
         alert("Click"); 
         if (txtUsername.value != '' && txtPassword.value != '') 
         { 
          var loginReq = Titanium.Network.createHTTPClient(); 
          loginReq.onreadystatechange = function(){ 
           alert('onreadystatechange'); 
          }; 
          loginReq.onload = function() 
          { 
           alert("load"); 
           var json = this.responseText; 
           var response = JSON.parse(json); 
           if (response.logged == true) 
           { 
            alert("Welcome " + response.name + ". Your email is: " + response.email); 
           } 
           else 
           { 
            alert(response.message); 
           } 
          }; 
          loginReq.onerror = function(){ 
           alert("Error"); 
          }; 
          loginReq.open("GET","http://localhost/iMessage/Authenticate.svc/CheckLogin/praveen/matoria"); 
          // var params = { 
           // username: txtUsername.value, 
           // password: Ti.Utils.md5HexDigest(txtPassword.value) 
          // }; 
          //loginReq.send(params); 


          loginReq.send(null); 
         } 
         else 
         { 
          alert("Username/Password are required"); 
         } 
        }); 
       } 
      }, 
      exitOnClose:true 
     }); 

如果我使用的浏览器和比它向我发送以下响应发送相同的请求:

{"email":"[email protected]","logged":true,"name":"Praveen Matoria"} 

FYI:提前

感谢:仅供参考我使用以下link

+0

我听说过在android模拟器上使用本地主机之前的问题。 – bh88 2011-06-08 19:32:03

+0

@ Brian-Huenefeld:我将尝试在这种情况下使用在线WCF并进行测试。感谢您的评论。 – iMatoria 2011-06-09 02:10:25

+0

@Brain Huenefeld:在将e参数传递给错误函数后,我现在有确切的错误。它说“连接到http:// localhost拒绝”。 Probabily,要么我应该与iPhone模拟器测试或去在线WCF。 – iMatoria 2011-06-09 03:39:08

回答

2

我终于找到了使用localhost for android的方法。当我访问我的虚拟机时,它点击了我的大脑。

解决方案:每台机器都有ATLEAST 3个IP地址:

  1. 本地主机
  2. 127.0.0.1,通过它可以访问互联网
  3. 一些互联网IP ADDRES。转到命令提示符并键入“ipconfig”。在我的情况下,192.168.1.6是IP地址。

使用这个,你的请求会先到路由器,然后再来回。

可能是我在某些事实上错了,但总体想法是一样的。

1

尝试改变

loginReq.onerror = function(){ 
    alert("Error"); 
} 

loginReq.onerror = function(e){ 
    alert("Error: " + e.error); 
} 

这至少应该给你,你得到了错误的信息。

+0

我会在晚上测试它,如果不是现在。应该标记它的答案,即使这让我知道错误,我可以解决它。不管怎么说,还是要谢谢你。 – iMatoria 2011-06-09 02:12:33