如何在WKWebView DecisionPolicyForNavigationAction中捕获httpBody?

时间:2018-12-05 22:44:00

标签: ios swift http webview wkwebview

我在iOS应用程序中从UIWebView切换到WKWebView。 Web视图将加载一个包含POST形式的远程文档。提交表单后,将通过PHP生成PDF。

要能够正确下载并显示此PDF,我需要在提交表单时捕获POST内容-并执行手动URLRequest来下载文件

我可以按以下方式捕获请求,但以下代码中的httpBody为空:

func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: ((WKNavigationActionPolicy) -> Void)) {

     var request = navigationAction.request

     if (request.httpMethod == "POST") {
           request.httpBody // <-- is EMPTY

           // as the httpBody is empty, the request below does not get the required result anymore

           Alamofire.request(request).responseData { response in
                ...
                let pdfData : Data = response.result.value!
                ...
                let docController = UIDocumentInteractionController(url: urlToLocalPdfFile)
                docController.delegate = self
                docController.presentPreview(animated: true)
           }
     }
}

这确实与UIWebView一起使用。是否可以通过上面的代码访问httpBody,或者是否可以通过任何替代方法来完成PDF下载(如上所述)?

0 个答案:

没有答案