链接未在 uiwebview 中打开

Posted

技术标签:

【中文标题】链接未在 uiwebview 中打开【英文标题】:link is not opening in uiwebview 【发布时间】:2018-12-03 13:57:49 【问题描述】:

我有如下链接,

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)!))

注意:

如果我使用简单的链接作为http://www.google.com,它可以工作。

【问题讨论】:

你的问题是!这个标记你需要让它可选,这样它就不会崩溃 @wings : 仍然崩溃... google.com,很好,亲爱的... 【参考方案1】:

您发布的链接不是有效的 URL。它在您的描述中包含空格。你没有正确编码。

【讨论】:

这是我从 web api 收到的...我尝试了各种 addingPercentEncoding 但仍然有同样的问题... link = link.replacingOccurrences(of: " ", with: "%20") 我手动添加了这一行,现在它可以工作了……我没有其他选择了……【参考方案2】:

正如其他人提到的,问题是您提供给URL initializer 的链接不是有效的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))

【讨论】:

【参考方案3】:

我发现 url 已经编码,但是 API 有问题,他们在 url 中发送空格。

所以我用 %20 替换空格

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

这种方式现在一切正常。

【讨论】:

以上是关于链接未在 uiwebview 中打开的主要内容,如果未能解决你的问题,请参考以下文章

带有iOS swift的Facebook SDK未在UIWebView中打开[重复]

PDF 未在 UIWebView 中正确显示

iOS 跨不同 UIWebViews 共享 cookie

如何在 UIWebView 中打开 .csv 链接

UIWebView 未在 iPhone 中显示具有正确字体大小的 .doc 文件

自动布局、约束和旋转