WKWebViewでNSURLRequestをPOSTするとヘッダーが消える問題(解決)

Filed under iOS SDK, トラブルシューティング
Tagged as

まだ問題を解決できていません。解決したら本ブログも更新します。解決しました!

POSTできない問題

NSMutableURLRequesetでリクエスト内容を生成し、POSTして結果を表示したい、という処理があります。
これまでUIWebViewで行っていて問題なく動作していましたが、そのコードを、WKWebViewに置き換えると、POSTしたはずのものが消える、という現象が発生しています。(iOS 9.0.1で確認)

ネット上の同様の情報

とりあえず、ググッて調べてみたリンク集。

1. Can’t set headers on my WKWebView POST request – Stack Overflow

http://stackoverflow.com/questions/26253133/cant-set-headers-on-my-wkwebview-post-request
2014-10-11
iOS 8で発生している様子。
JavaScriptでPOSTしている回答がついている。

2. It’s not possible to perform a POST request with HTTPBody content in a WKWebView.

http://www.openradar.me/20464240
2015-04-07
iOS 8.2で発生している。
回答なし。

3. WKWebView ignores NSURLRequest body | Apple Developer Forums

https://forums.developer.apple.com/thread/18952
2015-09-20
iOS 9実機、9.0, 8.4シミュレータで発生している様子。
Appleの回答は、「多分レアケース。再現するコードをまとめてバグレポートに送って」。。

4. WKWebView Post Request Bug?

http://www.openradar.me/20304207
2015-03-26
Mac OS X 10.10.2でも問題が発生している様子。
回答なし。

解決案

「WKWebViewではなく、別の方法で通信して、その結果をWKWebViewに渡す」という方法しか無いっぽいです。
【結論】「NSURLSessionで通信して、その結果を、WKWebViewに渡す」
と、よく見たら、上記でリンクしている最初の記事の回答の1.の書いてあることがまさにそれでした。この回答の場合は「NSURLConnectionを使って通信してそのレスポンスデータをWKWebViewに渡せばOK」と書いてありますが、今はNSURLConnectionのメソッドはdeprecatedなものが多くなってきたので、NSURLSessionが良いですね。


Post a Comment

Your email is never published nor shared. Required fields are marked *

*
*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)