我正在尝试使用有效的网址从iTunes下载图片 - 但图片未被下载。这是链接:
现在,当我尝试下载图像时,由于某些奇怪的原因它返回NULL:
NSData *imageData = [NSData dataWithContentsOfURL:[NSURL URLWithString: @"http://is5.mzstatic.com/image/thumb/Music7/v4/53/fc/a2/53fca253-84b1-f2cd-4e17-98be502ec53c/UMG_cvrart_00602547534873_01_RGB72_1500x1500_15UMGIM41882.jpg/60x60bb-85.jpg"]];
这仅适用于iTunes链接的插图。
(lldb)po imageData
零
答案 0 :(得分:3)
我知道这有一段时间了,但是如果其他人正在寻找解决方案......
在iOS 9中,Apple开始要求在URL上使用App Transport Security。这意味着“http:”需要替换为“https:”。
当你获得像artworkUrl60这样的图片网址时,它仍然是“http:”,因为Apple不想破坏现有的应用程序。
合乎逻辑的做法是将“http:”替换为“https:”。
但这不起作用!如果将其粘贴到浏览器中,它甚至不起作用,因为mzstatic.com网站似乎没有有效的证书。
解决方案是完全关闭ATS(不推荐)或白名单mzstatic.com。
打开Info.plist并插入以下内容:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<false/>
<key>NSExceptionDomains</key>
<dict>
<key>mzstatic.com</key>
<dict>
<!--Include to allow subdomains-->
<key>NSIncludesSubdomains</key>
<true/>
<!--Include to allow HTTP requests-->
<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
</dict>
这似乎解决了这个问题。
大卫