我正在使用 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地址:
- 本地主机
- 127.0.0.1
- 您访问互联网时使用的一些互联网 IP 地址。转到命令提示符并输入“ipconfig”。就我而言,192.168.1.6 是 IP 地址。
使用此功能,您的请求将首先发送到路由器,然后再返回。
也许我在某些事实上是错误的,但总体思路是相同的。
关于titanium - 无法从模拟器向 WCF 发送请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6283453/