2016-08-19 2 views
0

Я работаю над проектом приложения Android в течение года, и я реализовал эту функцию в самом начале. Приложение - приложение для управления расходами и сбережениями, и у него есть функция, которая преобразует валюты в фоновом режиме, если пользователь в настоящее время находится в другой стране. Я использую API-интерфейс geonames, чтобы узнать название страны. Вот соответствующий код:Почему я внезапно получаю сообщение об ошибке при использовании URLLoader?

countryURLRequest = new URLRequest('http://api.geonames.org/findNearby?lat='+latitudes+'&lng='+longitudes+'&username=fatninja'); 
countryURLLoader = new URLLoader(); 

countryURLLoader.load(countryURLRequest); 

Сегодня, когда я послал латы и LNG значения от тренажера я получил указанную ошибку потока на этой линии:

countryURLLoader = new URLLoader(); 

Что странно, что эта функция была отлично работает с самого начала. Я думал, что это может быть ошибка в коде, поэтому я запускал проект из резервной копии (с 3 месяцев назад), он дает ту же ошибку. Я знаю, что он работал 3 месяца назад. В чем может быть проблема?

+1

Какое полное сообщение об ошибке вы видите? Это происходит во время компиляции или во время выполнения? –

+0

Ошибка # 2044: необработанный ioError :. text = Ошибка # 2032: Ошибка потока. URL: http://api.geonames.org/findNearby?lat=12.21354&lng=6.432163&username=fatninja \t at TodayPopup/onGeoUpdated() [F: \ (адрес-удален) \ TodayPopup.as: 164] –

ответ

1

Эта ошибка указывает на то, что у вас возникла проблема при извлечении данных. В коде нет ничего плохого. Возможно, ваша сетевая конфигурация изменилась, и это препятствует доступу к веб-службе.

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

Есть две вещи, которые вы должны сделать.

  1. Добавить обработчик события ошибки ввода-вывода и обработчик события HTTP-статуса.

    var loader: URLLoader = new URLLoader; loader.contentLoaderInfo.addEventListener (IOErrorEvent.IO_ERROR, loader_ioErrorHandler); // Обратите внимание, что слушатель добавляется к объекту contentLoaderInfo loader.addEventListener (HTTPStatusEvent.HTTP_STATUS, loader_httpStatusHandler); loader.load (новый URLRequest («www.example.com»));

    функция loader_ioErrorHandler (е: IOErrorEvent): аннулируются { // Обработка ошибок след (e.text); }

    функция loader_httpStatusHandler (е: HTTPStatusEvent.HTTP_STATUS): пустота { след (e.status); }

Добавить метки для уведомления пользователя об ошибке в обработчик ошибок ввода-вывода, и, возможно, кнопка повторить запрос.

  1. Увеличьте продолжительность таймаута, используя свойство requestTimeout экземпляра HTTPService.
+0

Привет. . Спасибо за ответ. Когда я изменил версию AIR SDK с 22.0 до 20.0, она работала так же, как и раньше. Может быть, это ошибка в SDK? –

+1

Я вижу старый отчет об ошибке аналогичной проблемы. Но об этом сообщили в AIR SDK 2.5.Я не думаю, что они до сих пор регрессировали. Вы проверили предложения, сделанные Домиником по адресу http://stackoverflow.com/a/9986938/229367? Может случиться так, что новый SDK имеет другой набор разрешений по умолчанию или, возможно, изменил способ объявления разрешений. –

+0

Спасибо aot .. я проверю это .. –

Смежные вопросы