2

我似乎无法弄清楚这一点,我试着用谷歌搜索我的手指现在受伤了。

我正在向启用了 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 Emulator 可以连接到 Internet。感觉就像没有传递参数或者没有在网页上触发重定向。

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

4

1 回答 1

0

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

  1. 确保在将参数发送到服务器之前对其进行字符串化

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

  1. 在行之后包括以下内容 - orderReq.open('POST',myurl, false);

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

于 2014-08-06T13:26:13.767 回答