Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在swift中获取WKWebView的Post请求正文_Swift - Fatal编程技术网

如何在swift中获取WKWebView的Post请求正文

如何在swift中获取WKWebView的Post请求正文,swift,Swift,我浏览了这篇文章。但它并没有告诉我们正在使用什么JS脚本。我刚开始在swift中注入JS,所以这篇文章对我来说并不清楚 在wkwebview中加载请求后,我希望获取post请求的http正文。获得它的正确方法是什么。可能与错误有关:。它已经在iOS 13中修复 我找到了这个问题的解决办法。要获取post请求html的内容,我们需要添加以下函数:- func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavi

我浏览了这篇文章。但它并没有告诉我们正在使用什么JS脚本。我刚开始在swift中注入JS,所以这篇文章对我来说并不清楚


在wkwebview中加载请求后,我希望获取post请求的http正文。获得它的正确方法是什么。

可能与错误有关:。它已经在iOS 13中修复

我找到了这个问题的解决办法。要获取post请求html的内容,我们需要添加以下函数:-

func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
  print(navigationAction.request.httpBody)
}
func webView(webView:WKWebView,didfish导航:WKNavigation!) { PerformanceMonitor.stopEvent(事件:.startToLogin) hideActivityIndicator(延迟:真)

webView.evaluateJavaScript(((function(){for(var i=0;i

evaluateJavaScript将javascript字符串作为参数,该参数只不过是要提取的html内容的路径。我在这里使用一个函数cz,我需要在所有元素的列表中找到一个内容。您可以使用“document.documentElement.innerHTML”,它将给出全部内容。

“document.getElementById(\“我的id\”).innerHTML”。这是什么意思?我需要添加任何html文档或JS脚本才能运行吗?我还需要在JS本身中发出请求吗?上面函数中的jsonString对我来说是空的,因此返回。我编辑了我的ans,请现在检查它,我希望对youhttpbody有效的值为零。所以我之前使用的是UIWebView,它用于完全返回request.httpbody。但对于WKWebView,httpbody始终为零。
    webView.evaluateJavaScript("(function() { for (var i = 0; i < document.forms.length; ++i) { if (typeof document.forms[i]['SAMLResponse'] !== 'undefined')  return document.forms[i]['SAMLResponse'].value;} })();", completionHandler: { (jsonRaw: Any?, error: Error?) in
        guard let jsonString = jsonRaw as? String
        else
        {
            return
        }
        //use the extracted content for use.
    })
}