我的项目中有几个不同的WKWebViews,他们都通过一个WKProcessPool共享cookie。使用共享的WKWebViewCookies请求
现在我想对REST API发出请求,并且需要将该WKWebViews中的cookie完全发送到该API。有没有办法得到饼干?我所得到的一切都是来自NSHTTPCookieStorage
的cookies,但它们似乎并不与我在WKWebView中使用的Cookie保持同步。或者甚至有可能发出使用WKProcessPool的请求?
我的项目中有几个不同的WKWebViews,他们都通过一个WKProcessPool共享cookie。使用共享的WKWebViewCookies请求
现在我想对REST API发出请求,并且需要将该WKWebViews中的cookie完全发送到该API。有没有办法得到饼干?我所得到的一切都是来自NSHTTPCookieStorage
的cookies,但它们似乎并不与我在WKWebView中使用的Cookie保持同步。或者甚至有可能发出使用WKProcessPool的请求?
1)如果你的cookies不是纯HTTP的,你可以通过评估JavaScript命令document.cookie
webView
得到它们并将它们用于你的请求。 如果他们只是HTTP,似乎没有工作方法来做到这一点。 据我所知,在WKWebView
和NSURLSession
之间没有文档化的同步cookie的方法。另一种方法(如果Cookie属于REST API所属的同一域) - 使用相同的进程池创建“背景”webView
并通过此实例对REST API执行所有操作 - cookies将自动添加(即使HTTP-只):
可以设置任何PARAMS(方法/体/标头/等)经由loadRequest:
请求和负载 它;如果您的REST API返回JSON,则可以使用JavaScript命令 document.body
来获取它;
获得响应代码有点困难 - 你需要实现的 WKNavigationDelegate
和catch it webView:decidePolicyForNavigationResponse:
方法。
此外,您需要记住,您只能同时执行webView
中的1个请求 。所以,你可能需要创建一个队列 的请求,将一个接一个地执行。