невозможно подключиться к сервису JSON в приложении Android студии Titanium - PullRequest
0 голосов
/ 23 сентября 2011

Я пытаюсь создать приложение для входа в систему, которое принимает идентификатор и пароль. Когда я нажимаю на кнопку logi, она подключается к нашему локальному серверу с помощью JSON ... с указанным URL-адресом. Код:

   var loginReq = Titanium.Network.createHTTPClient();
   loginReq.onload = function() 
   { 
     var json = this.responseText; alert(json); 
        var response = JSON.parse(json); 
        if (response.data.status == "success") 
         { alert("Welcome "); 
           } 
          else 
          { alert(response.data.status); 
        } 
             };

           loginReq.onerror = function(event)
              {
             alert(event.toSource()); 
             //alert("Network error"); 
                 };

         loginBtn.addEventListener('click',function(e) 
         { if (username.value != '' && password.value != '') 
         {
          var url = 'our local url                               action=login&id='+username.value+'&pwd='+password.value;
         loginReq.open("POST",url);
        loginReq.send();
          }
          else
           {
            alert("Username/Password are required");
           }
            });

Здесь он не подключается к нашему URl..так что он входит в функцию loginReq.onerror ... вместо функции loginReq.onload..почему он выдает ошибку времени выполнения.. Тот же самый код, работающий нормально с Iphone. Ошибка времени выполнения: .. TypeError: Невозможно вызвать свойство toSource в объекте {'source': [Ti.Network.HttpClient], указанный URL-адрес} не является функцией, этообъект.

Это ошибка ... пожалуйста, дайте мне знать ...

Ответы [ 2 ]

0 голосов
/ 09 октября 2011

«toSource ()» не является документированной функцией ни для одной из платформ, и я также не вижу ее в источнике для Titanium Mobile. Если вы не получаете ошибку на iOS, я предполагаю, что это потому, что обработчик ошибок не вызывается. Возможно, у вашего эмулятора или устройства нет доступа к Интернету, а у вашего симулятора iOS - нет?

Независимо от того, обработка ошибок в HTTPClient обычно выглядит примерно так:

loginReq.onerror = function(e)
{
    Ti.API.info("ERROR " + e.error);
    alert(e.error);
};
0 голосов
/ 27 сентября 2011

Очевидно, что функция toSource () не существует в Android, так как это объект.Попробуйте выполнить отладку и посмотрите, что содержит событие объекта.

Это можно сделать, добавив строку над строкой предупреждения и добавив в нее строку отладки.

Посмотрите в режиме отладки и посмотрите всепеременные

...