2016-08-22 34 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個請求 。所以,你可能需要創建一個隊列 的請求,將一個接一個地執行。

相關問題