HttpClient在Android和iOS上的处理方式不同?

时间:2017-02-08 10:34:03

标签: android ios appcelerator

我从大约2天开始经历这个问题,但我无法找到解决问题的方法。 我有一个可以使用特定URL调用的服务,并使用方法POST和' application / x-www-form-urlencoded'发送一些参数。作为数据类型。

此服务每次调用时都会使用时间戳更新数据库表(例如'上次登录')。

在Android上,我的代码按预期运行,但在iOS(模拟器)上运行它没有任何作用...使用' Charles'我知道该服务是从两个模拟器调用的,但我注意到iOS上的响应大约需要60ms,而Android上大约需要10000ms。

这是我用来调用服务的代码:

function updateUserModules(_params) {
    if(_params.Number) {
        var token = md5HashEncoder(_params.Number + '$XDTPEP132x ');
        Ti.API.warn('TOKEN: ' + token);

        var httpClient = Ti.Network.createHTTPClient();

        httpClient.open("POST", "https://myxd.xdpartners.com/updateUsedModules");
        httpClient.setRequestHeader("content-type", "application/x-www-form-urlencoded");

        var params = {
            token: token,
            licenceNumber: _params.Number,
            moduleKeyId: "71",
            terminalId: "0",
            lastUsedDate: moment().format('YYYY-MM-DD HH:mm:ss')
        };

        httpClient.send(params);
    }
}

问题出在哪里?

2 个答案:

答案 0 :(得分:1)

我相信您的SSL证书有问题。使用一些经过调整的参数运行代码并添加onerror处理程序可以得到以下结果:

[ERROR] :  {
[ERROR] :      code = "-1202";
[ERROR] :      error = "The certificate for this server is invalid. You might be connecting to a server that is pretending to be \U201cmyxd.xdpartners.com\U201d which could put your confidential information at risk.";
[ERROR] :      source = "[object TiNetworkHTTPClient]";
[ERROR] :      success = 0;
[ERROR] :      type = error;
[ERROR] :  }

Android> 5在某些情况下更加宽容,这可以解释为什么它可以在那里工作。

答案 1 :(得分:0)

尝试使用httpClient.send(JSON.stringify(params));代替httpClient.send(params);

当我遇到与你相同的问题时,这就解决了我的项目。