2012-11-09 140 views
2

我似乎无法弄清楚这一点,我试过用Google搜索,我的手指现在受伤了。Appcelerator HTTPClient请求不与服务器进行身份验证

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

我正在运行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模拟器可以连接到互联网。感觉就像参数没有被传递或重定向没有在网页上被触发。

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

回答

0

好的,我知道这个问题太旧了。但是,对于任何正在寻找答案的人来说,这对我来说都是有效的。

  1. 确保PARAMS其发送到服务器

orderReq.send(JSON.stringify(params));

  1. 包括前字符串化行右后下 - orderReq.open( 'POST',myurl,FALSE) ;

xhr.setRequestHeader('Content-Type', 'application/json'); xhr.setRequestHeader('charset','utf-8');