link 未在 uiwebview 中打开
link is not opening in uiwebview
我有 link 如下,
https://payood.test/loofpay/XUYZGlobal/WebForms/checkoutservice%20.aspx?paymentchannel=ddd&isysid=37268474138868&amount=25&description=Transaction From XXX&description2=dsdsd&tunnel=&original=ZXz4kfH9fiVIZ1jWBaGjww3hgwX84CGAahlCcsKWXvs%3d&responseUrl=http://localhost:55766/dsss/Response.aspx&hash=BE0481E5F9AA1C9F5B26A8E93A6ACAAD5888EDE9
当我尝试打开时,它崩溃并显示以下错误。
fatal error: unexpectedly found nil while unwrapping an Optional value
下面是我使用的代码
link = above link....
webView.loadRequest(URLRequest(url: URL(string: link)!))
注:
如果我使用简单的 link 作为 http://www.google.com
,就可以了。
您发布的 link 无效 URL。它在您的描述中包含空格。你没有正确编码。
正如其他人提到的,问题是您提供给 URL initializer
的 link 不是有效的 url
,并且由于 !
,您的代码无法初始化来自以下代码中的字符串的 URL,它将崩溃:
URL(string: link)!
所以你必须在 初始化 URL 之前将字符串更改为一些有效的 url 。像这样:
guard let escapedURLString = link.addingPercentEncoding(withAllowedCharacters: .urlHostAllowed) else {
fatalError("Unknown URL string:\(link)")
}
guard let finalURL = URL(string: escapedURLString) else {
fatalError("Can not create a url from:\(escapedURLString)")
}
print(finalURL) //to check if it works
webView.loadRequest(URLRequest(url: finalURL))
我发现 url 已经编码,但 API 有问题,他们在 url 中发送空格。
所以我用 %20
替换空格
link = link.replacingOccurrences(of: " ", with: "%20")
现在一切正常。
我有 link 如下,
https://payood.test/loofpay/XUYZGlobal/WebForms/checkoutservice%20.aspx?paymentchannel=ddd&isysid=37268474138868&amount=25&description=Transaction From XXX&description2=dsdsd&tunnel=&original=ZXz4kfH9fiVIZ1jWBaGjww3hgwX84CGAahlCcsKWXvs%3d&responseUrl=http://localhost:55766/dsss/Response.aspx&hash=BE0481E5F9AA1C9F5B26A8E93A6ACAAD5888EDE9
当我尝试打开时,它崩溃并显示以下错误。
fatal error: unexpectedly found nil while unwrapping an Optional value
下面是我使用的代码
link = above link....
webView.loadRequest(URLRequest(url: URL(string: link)!))
注:
如果我使用简单的 link 作为 http://www.google.com
,就可以了。
您发布的 link 无效 URL。它在您的描述中包含空格。你没有正确编码。
正如其他人提到的,问题是您提供给 URL initializer
的 link 不是有效的 url
,并且由于 !
,您的代码无法初始化来自以下代码中的字符串的 URL,它将崩溃:
URL(string: link)!
所以你必须在 初始化 URL 之前将字符串更改为一些有效的 url 。像这样:
guard let escapedURLString = link.addingPercentEncoding(withAllowedCharacters: .urlHostAllowed) else {
fatalError("Unknown URL string:\(link)")
}
guard let finalURL = URL(string: escapedURLString) else {
fatalError("Can not create a url from:\(escapedURLString)")
}
print(finalURL) //to check if it works
webView.loadRequest(URLRequest(url: finalURL))
我发现 url 已经编码,但 API 有问题,他们在 url 中发送空格。
所以我用 %20
替换空格link = link.replacingOccurrences(of: " ", with: "%20")
现在一切正常。