2016-08-22 35 views
2

我的项目中有几个不同的WKWebViews,他们都通过一个WKProcessPool共享cookie。使用共享的WKWebViewCookies请求

现在我想对REST API发出请求,并且需要将该WKWebViews中的cookie完全发送到该API。有没有办法得到饼干?我所得到的一切都是来自NSHTTPCookieStorage的cookies,但它们似乎并不与我在WKWebView中使用的Cookie保持同步。或者甚至有可能发出使用WKProcessPool的请求?

回答

2

1)如果你的cookies不是纯HTTP的,你可以通过评估JavaScript命令document.cookiewebView得到它们并将它们用于你的请求。 如果他们只是HTTP,似乎没有工作方法来做到这一点。 据我所知,在WKWebViewNSURLSession之间没有文档化的同步cookie的方法。另一种方法(如果Cookie属于REST API所属的同一域) - 使用相同的进程池创建“背景”webView并通过此实例对REST API执行所有操作 - cookies将自动添加(即使HTTP-只):

  1. 可以设置任何PARAMS(方法/体/标头/等)经由loadRequest:请求和负载 它;如果您的REST API返回JSON,则可以使用JavaScript命令 document.body来获取它;

  2. 获得响应代码有点困难 - 你需要实现的 WKNavigationDelegatecatch it webView:decidePolicyForNavigationResponse:方法。

  3. 此外,您需要记住,您只能同时执行webView中的1个请求 。所以,你可能需要创建一个队列 的请求,将一个接一个地执行。

相关问题