Я пытаюсь получить доступ к объекту запроса от этого метода на 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
. Это быстрее, чем то, что я предлагаю здесь, но если бэкэнд, который я бью, изменяет свои конечные точки, мое приложение сломается. Обработка типа ответа была бы отличной реализацией. Любые предложения приветствуются!