链接未在uiwebview中打开

时间:2018-12-03 13:57:49

标签: swift uiwebview urlrequest

我的链接如下,

https://payood.test/loofpay/XUYZGlobal/WebForms/checkoutservice%20.aspx?paymentchannel=ddd&isysid=37268474138868&amount=25&description=Transaction来自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)!))

注意:

如果我将简单链接用作http://www.google.com,那么它将起作用。

3 个答案:

答案 0 :(得分:2)

您发布的链接不是有效的URL。说明中包含空格。您没有正确编码。

答案 1 :(得分:0)

正如其他人提到的那样,问题在于您提供给URL initializer的链接不是有效的url,并且由于!,您的代码无法以以下代码,它将崩溃:

URL(string: link)!

因此,必须在初始化字符串之前,将字符串更改为某个有效的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))

答案 2 :(得分:0)

我发现url已被编码,但是API存在问题,它们正在url中发送空格。

所以我用%20替换空格

link = link.replacingOccurrences(of: " ", with: "%20")

这种方式现在一切正常。