2012-11-09 187 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');