2017-02-08 3 views
0

Я просматриваю эту проблему примерно через 2 дня, и я не могу понять, как ее решить. У меня есть служба, которая может быть вызвана с использованием определенного URL-адреса и отправки некоторых параметров с использованием метода POST и «application/x-www-form-urlencoded» в качестве типа данных.HttpClient обрабатывается по-разному на Android и iOS?

Эта служба будет обновлять таблицу базы данных временной меткой каждый раз, когда она вызывается (например, «последний раз вошел в систему»).

На Android мой код работает так, как ожидалось, но запускает его на iOS (симуляторе), он ничего не делает ... Используя «Charles», я знаю, что сервис вызывается с обоих симуляторов, но я заметил, что ответ занимает около 60 мс на iOS и около 10000 мс на Android.

Это код, я использую для вызова службы:

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); 
    } 
} 

Любые идеи, где проблема есть?

+0

Я выполнил реализацию HTTP с одним и тем же URL как для Android, так и для iOS, и да, они очень разные. Можете ли вы опубликовать код iOS, который не будет работать? – Josh

+0

Привет, Джош, что вы имеете в виду код iOS, который не будет работать? Чтобы позвонить в службу, я использую этот код только для Android и iOS, который работает на Android, но не на iOS. –

+0

Я думаю, что есть что-то не так в вашем клиентском коде iOS, так как сервис, похоже, хорошо работает на Android. @Luis Pedro – Josh

ответ

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 является в некоторых случаях более щадящих, которые могли бы объяснить, почему он там работает.

+0

Это то, что я нашел, и я решаю его, удалив «s» с «https». Я знаю, что я удалил систему безопасности, но в этом случае у меня нет минут, поскольку я не передаю какие-либо разумные данные ... –

0

Попробуйте httpClient.send(JSON.stringify(params)); вместо httpClient.send(params);

Это закрепив его на моем проекте в то время как я был с теми же вопросами, что и вы.