Реализуйте URLProtocol, но соблюдайте конфигурацию сеанса - PullRequest
0 голосов
/ 12 декабря 2018

Я хочу перехватить все сетевые вызовы (запрос и ответ) в приложении, поэтому я реализую конкретный URLProtocol подкласс.

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

Один из подходов - сохранить задачу из init(task: URLSessionTask, cachedResponse: CachedURLResponse?, client: URLProtocolClient?) и возобновить ее в startLoading(), но тогда нет способа получить уведомление о результатах задачи..

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

Вопрос: как мне реализовать URLProtocol, точнее startLoading(), чтобы конфигурация сеанса не была потеряна, и я все еще получал обратные вызовы делегата задачи?

Идеи:

  1. Извлечение сеанса (и конфигурации) из задачи.Минусы: разоблачение частной собственности, которая не гарантируется.
  2. Откажитесь от URLProtocol и пошлите кучу методов URLSession и URLSessionTask.Минусы: требуется много алкоголя.
  3. ?
...