gpt4 book ai didi

iOS 至少在 10.3 之前缺少 URLRequest 中的 POST 数据

转载 作者:行者123 更新时间:2023-11-30 11:12:57 25 4
gpt4 key购买 nike

带有 POST 数据的 Web View 不会 POST 正文,因此我缺少 Web View 所需的参数。在以后的版本中它可以正常工作,但在 9.1 中不起作用。

这是我设置 WebView 的方法:

lazy var webView:WKWebView = {
let view = WKWebView()
let url:URL = URL(string:<MyURL>)!
let body:String = String(format: "param1=%@&param2=%@", arguments: [getParam1(), getParam2()])
var request = URLRequest(url:url)
request.httpMethod = "POST"
request.httpBody = body.data(using: .utf8)
request.addValue("application/x-www-form-urlencoded", forHTTPHeaderField: "content-type")
view.navigationDelegate = self
view.load(request)
view.backgroundColor = .white
view.scrollView.delegate = self;
return view
}()

我在创建 body 时确认了我的参数存在。我到达该页面,但它显示一条有关两个参数丢失的错误消息。

知道如何在旧版本中使用它吗?

编辑:当我在 view.navigationDlegate... 行添加断点,然后打印请求的描述时,我注意到较新版本和较早版本的请求是相同的,除了一些预期的内容由于设备上的 session token 而改变的字节。该范围是我期望有所不同的确切范围。

最佳答案

啊,这似乎是 Web Kit 的一个错误,已在 iOS 11 中修复...相当大的错误,令人惊讶的是他们在早期版本中没有修补它。

我真的希望使用 WKWebView 而不是 UIWebView 以获得更好的 JavaScript 性能,但看起来我必须解决。

https://bugs.webkit.org/show_bug.cgi?id=167131

为了补充,我通过添加一个实例 var,var webView:UIView 解决了这个问题,并在 viewDidLoad 中,我这样做了:

if #available(iOS 11.0, *) {
webView = _webView
}
else {
webView = _webView2
}

将我的 WKWebView 惰性变量更改为 _webView,添加 _webView2 惰性变量作为 UIWebView,并实现了两者的委托(delegate)。这样,后来的 iOS 用户就可以获得 WKWebView 的性能优势,而不必将最低目标提高到 11.0 并失去 iOS 9-10 用户。

关于iOS 至少在 10.3 之前缺少 URLRequest 中的 POST 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52006866/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com