Получите доступ к NSURLRequest из WKNavigationDelegate's managePolicyForNavigationResponse: метод - PullRequest
0 голосов
/ 14 июня 2019

Я пытаюсь получить доступ к объекту запроса от этого метода на WKNavigationDelegate:

optional func webView(_ webView: WKWebView, 
      decidePolicyFor navigationResponse: WKNavigationResponse, 
      decisionHandler: @escaping (WKNavigationResponsePolicy) -> Void)

Это кажется простой задачей, но я не могу понять, как получить доступ к объекту NSURLRequest напрямую из того, что доступно в этом методе. Я могу получить доступ к объекту URLResponse как свойство на WKNavigationResponse и оттуда привести его к HTTPURLResponse (так как это сетевой запрос), но даже на HTTPURLResponse я не могу найти какое-либо свойство, ссылающееся на исходный запрос. Я хочу определить тип ответа и, в зависимости от типа, отменить запрос и загрузить его вручную в качестве задачи с данными. Я просмотрел WKWebView, но не нашел никаких свойств, позволяющих получить доступ к ожидающим запросам.

Я мог бы вручную сохранить каждый ожидающий запрос в методе decidePolicyFor:WKNavigationAction делегата навигации и использовать этот запрос, но я не смог найти никакой документации о том, происходит ли только один запрос за один раз. Я мог сохранить коллекцию ожидающих запросов, но не смог найти единственного способа связать WKNavigationRequest с WKNavigationResponse.

То, что я сейчас делаю, вручную отменяет определенный запрос в decidePolicyFor: WKNavigationAction. Это быстрее, чем то, что я предлагаю здесь, но если бэкэнд, который я бью, изменяет свои конечные точки, мое приложение сломается. Обработка типа ответа была бы отличной реализацией. Любые предложения приветствуются!

...