无法从仿真器向WCF发送请求

时间:2011-06-08 18:28:05

标签: titanium appcelerator

我使用Titanium框架编写登录页面并使用Android模拟器。 我需要验证用户身份。我使用下面提到的代码,但我收到“错误”警告。

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":"myEmail@gmail.com","logged":true,"name":"Praveen Matoria"}

仅供参考:作为参考,我使用以下link

提前致谢。

2 个答案:

答案 0 :(得分:2)

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

解决方案:每台计算机至少有3个IP地址:

  1. 本地主机
  2. 127.0.0.1
  3. 您可以访问互联网的一些互联网IP地址。转到命令提示符并键入“ipconfig”。就我而言,192.168.1.6是IP地址。
  4. 使用此功能,您的请求将首先转到路由器而不是来回。

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

答案 1 :(得分:1)

尝试更改

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

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

至少应该为您提供有关您所犯错误的更多信息。