2016-08-22 5 views
2

私はプロジェクト内にいくつかのWKWebViewを持っています。それらはすべて1つのWKProcessPoolでクッキーを共有しています。リクエストに共有WKWebViewCookiesを使用

今、私はREST APIでリクエストを作成し、そのWKWebViewsからそのAPIにそのCookieを正確に送信する必要があります。クッキーを入手する方法はありますか?私が得るものはすべてNSHTTPCookieStorageのクッキーですが、WKWebViewで使用するクッキーと実際には同期していないようです。あるいは、WKProcessPoolも使用する要求を出す可能性さえありますか?

答えて

2

1)CookieがHTTP専用でない場合は、JavaScriptコマンドdocument.cookiewebViewで評価し、リクエストに使用できます。 HTTPのみの場合は、これを行うための作業方法がないようです。 私が知る限り、WKWebViewNSURLSessionの間でクッキーを同期する方法はありません。

2)もう1つのアプローチ(CookieがREST APIが属する同じドメインに属している場合) - 同じプロセスプールで "バックグラウンド" webViewを作成し、このインスタンス経由でREST APIへのすべての操作を実行する - Cookieは自動的に追加されますのみ):

  1. あなたはloadRequest:を介して要求し、負荷 それをするどんなのparams(メソッド/ボディ/ヘッダ/など)を設定することができます。 REST APIがJSONを返す場合は、JavaScriptコマンド document.bodyを使用して取得できます。

  2. は少し難しく応答コードを取得する - あなたは WKNavigationDelegatecatch itwebView:decidePolicyForNavigationResponse:メソッドを実装する必要があります。

  3. また、 のリクエストをwebViewに同時に実行できることに注意する必要があります。したがって、いくつかのキュー の要求を1つずつ作成する必要があります。

関連する問題