titanium - 无法从模拟器向 WCF 发送请求

标签 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":"<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="117c68547c70787d51767c70787d3f727e7c" rel="noreferrer noopener nofollow">[email protected]</a>","logged":true,"name":"Praveen Matoria"}

仅供引用:作为引用,我正在使用以下 link :

提前致谢。

最佳答案

我终于找到了在android上使用localhost的方法。 当我访问虚拟机时,它突然引起了我的注意。

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

  1. 本地主机
  2. 127.0.0.1
  3. 您访问互联网时使用的一些互联网 IP 地址。转到命令提示符并输入“ipconfig”。就我而言,192.168.1.6 是 IP 地址。

使用此功能,您的请求将首先发送到路由器,然后再返回。

也许我在某些事实上是错误的,但总体思路是相同的。

关于titanium - 无法从模拟器向 WCF 发送请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6283453/

相关文章:

javascript - Javascript(Titanium)中单执行上下文和多执行上下文之间的区别

ios - 图片已上传到 Facebook 但未显示在页面上

javascript - javascript/appcelerator 中的换行

javascript - iOS 停止随机发送 httprequests[Titanium]

android - Titanium Studio 3.2.0 无法使用 Genymotion 2.0.3 进行调试

ios - 钛红色屏幕

ios - 无法在 bundle 中加载 NIB

mobile - Rhodes v/s 钛合金

ios - Titanium 使用 NSNotificationCenter 使用 Hyperloop

javascript - Appcelerator Titanium 中适用于 Android 平台的 Ti.Barcode 模块? (扫码机)