Appcelerator HTTPClient请求未通过服务器进行身份验证

时间:2012-11-09 15:30:36

标签: android appcelerator

我似乎无法想出这一个,我已经尝试使用谷歌搜索我的手指现在受伤了。

我正在对启用了SSL的Domino服务器执行HTTPClient请求。我的请求在iOS上进行测试时效果很好,但每次通过Android模拟器和移动网络进行测试时都会失败。

我正在运行Android 2.2 SDK。

当我尝试从应用程序登录时,我肯定会到达服务器,因为返回了HTML(登录Web窗体)。返回HTML时,它表示身份验证失败,或者重定向不起作用。通过iOS登录时,页面会重定向100%。

以下是我的代码:

var orderReq = Titanium.Network.createHTTPClient();
var myurl = 'https://domain/db.nsf?login';
orderReq.setEnableKeepAlive;
orderReq.open('POST',myurl, false);

var params = {
username: "Joe Smith",
password: "Password",
redirectto: "path/db.nsf/response.xsp"
};
orderReq.send(params);

var myreturn = orderReq.responseText;

if((myreturn.charAt(0) === '<') || (myreturn === ""))
{
Ti.API.info('Fail');
return 'Fail';

}
else
{
Ti.API.info('Pass');
var json = orderReq.responseText;
var response = eval('(' + json + ')');
return response.username;
}

我尝试了很多属性而无济于事。我可以确认Android Emulator可以连接到Internet。感觉就像没有传递参数或者没有在网页上触发重定向。

注意:我注意到,在通过Android模拟器进行身份验证时,它会立即失败,其中iOS会在1-2秒后返回true或false。

1 个答案:

答案 0 :(得分:0)

好吧我知道问题太旧了。但是,对于那些正在寻找答案的人来说,这对我有用。

  1. 确保params在发送到服务器之前进行字符串化
  2. orderReq.send(JSON.stringify(params));

    1. 在行后面加上以下内容 - orderReq.open(&#39; POST&#39;,myurl,false);
    2. xhr.setRequestHeader('Content-Type', 'application/json'); xhr.setRequestHeader('charset','utf-8');