Прикрепление прослушивателя событий ко всем URLRequest - PullRequest
0 голосов
/ 13 октября 2011

У нас есть гибкое приложение, которое подключается к прокси-серверу, который выполняет аутентификацию.Если время аутентификации истекло, прокси-сервер возвращает строку ошибки в формате json.Что я хотел бы сделать, это проверить каждый ответ URLRequest и проверить, есть ли сообщение об ошибке и отобразить его в гибком клиенте, а затем перенаправить обратно на экран входа в систему.слушатель всех URLRequests в глобальном порядке.Без необходимости искать в проекте и добавлять какой-либо метод в каждый URLRequest.Есть идеи, если это возможно?

Ответы [ 3 ]

2 голосов
/ 13 октября 2011

У J_A_X есть несколько хороших предложений, но я бы сказал немного дальше. Позвольте мне сделать некоторые предположения на основе предоставленной вами ограниченной информации.

  1. Сервисы разбросаны по всему вашему приложению, что означает, что они фактически встроены в несколько представлений.
  2. Если все ваши службы могут обрабатываться одним и тем же обработчиком, у вас условно есть одна служба, скопированная много раз.

Несмотря на то, что вы видите в примерах Adobe, показывающих их новый код генерации сервисов, вызывать сервисы напрямую из Views невероятно неуместно, отчасти из-за той самой проблемы, с которой вы сталкиваетесь - вы можете получить множество копий один и тот же сервисный код замусорил все ваше приложение.

В зависимости от того, насколько тесно переплетено ваше приложение (поверьте мне, я унаследовал довольно неприятные вещи, поэтому я знаю, что это легче сказать, чем сделать), вы можете обнаружить, что проще всего удалить все эти различные услуги и замените их, заставив все ваши представления отправлять всплывающее событие, которое попадает на верхний уровень. На верхнем уровне вы отвечаете на это событие, вызывая один экземпляр вашей службы, который снова обрабатывается в одном месте.

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

2 голосов
/ 13 октября 2011

Если вы используете только один сервис, невозможно установить глобальный обработчик URLRequest. На вашем месте я бы больше думал о правильной архитектуре вашего приложения, используя делегата и всегда проверяя результат через определенный сервис, который используется во всем приложении.

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

Сможете ли вы расширить класс и добавить прослушиватель событий в конструктор объекта? Мне не нравится этот подход, но он может сработать.

Вам просто нужно найти / заменить весь проект.

...