iOS 11 使用 ATS 从 HTTP 加载图像
iOS 11 Loading Images from HTTP with ATS
您好,请使用以下代码从网络服务器下载图像。请求是 HTTP,因此不安全。
DispatchQueue.global(qos: .userInitiated).async {
var productImage = Utilities.GetEmptyImageBottle()
if (entry.ImageName != nil || entry.ImageUrl != nil) {
let data = NSData(contentsOf: URL(string: entry.ImageUrl.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed)!)!)
if data != nil {
let image = UIImage(data: data! as Data)
productImage = image!
}
}
DispatchQueue.main.async {
cell.ProductImage.image = productImage
}
}
我还在 info.plist
中添加了以下内容
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
现在我的图片无法加载,并且出现以下错误:
NSURLConnection finished with error - code -1002
这是在 Xcode 9 运行 iOS 11。在 iOS 10 在 Xcode 8,没问题。
我错过了什么?
Error : Error Domain=NSURLErrorDomain Code=-1002 "unsupported URL"
-1002 似乎 URL(主机名)比 http.
更成问题
NSURLErrorUnsupportedURL
的最可能原因是 URL 没有可用的协议处理程序(也许您的 URL 字符串在 [=14= =] 前缀?).
我不太确定这个问题是由于 iOS 11 还是 Xcode 9 引起的,但听起来你需要应用这个
.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed)
仅在 URL 的最后一部分,您可能会在其中找到特殊字符。我尝试了它并且它起作用了,在完整的 url 上应用它会将 http: 格式损坏为 http%35,这不是 url 的基础,因此不会调用 web 视图的失败事件检索。因此,仅将它应用到 url 的部分,您可能会怀疑它包含特殊字符,例如空格,等
您好,请使用以下代码从网络服务器下载图像。请求是 HTTP,因此不安全。
DispatchQueue.global(qos: .userInitiated).async {
var productImage = Utilities.GetEmptyImageBottle()
if (entry.ImageName != nil || entry.ImageUrl != nil) {
let data = NSData(contentsOf: URL(string: entry.ImageUrl.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed)!)!)
if data != nil {
let image = UIImage(data: data! as Data)
productImage = image!
}
}
DispatchQueue.main.async {
cell.ProductImage.image = productImage
}
}
我还在 info.plist
中添加了以下内容<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
现在我的图片无法加载,并且出现以下错误:
NSURLConnection finished with error - code -1002
这是在 Xcode 9 运行 iOS 11。在 iOS 10 在 Xcode 8,没问题。
我错过了什么?
Error : Error Domain=NSURLErrorDomain Code=-1002 "unsupported URL"
-1002 似乎 URL(主机名)比 http.
更成问题NSURLErrorUnsupportedURL
的最可能原因是 URL 没有可用的协议处理程序(也许您的 URL 字符串在 [=14= =] 前缀?).
我不太确定这个问题是由于 iOS 11 还是 Xcode 9 引起的,但听起来你需要应用这个
.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed)
仅在 URL 的最后一部分,您可能会在其中找到特殊字符。我尝试了它并且它起作用了,在完整的 url 上应用它会将 http: 格式损坏为 http%35,这不是 url 的基础,因此不会调用 web 视图的失败事件检索。因此,仅将它应用到 url 的部分,您可能会怀疑它包含特殊字符,例如空格,等