2015-09-28 36 views
0

以下代码在iOS8.4.1(包括8.4.1)之前正常工作。虽然它在iOS9.0.1中无效。这是一个错误还是有这个变化的公开信息?我使用两台iPad进行测试。NSData无法从互联网收回图像

let url = NSURL(string: "http://www.mapshots.com/wp-content/uploads/2014/05/mapshots-ag-studio-agricultural-mapping-software-logo.png") 
let data = NSData(contentsOfURL: url!) 
NSLog("Data length @%", (data?.length)!) 
+0

这个问题是重复的。我应该删除它还是离开它? – Howard

回答

1

这是与ATS(应用程序传输安全协议)苹果iOS中9取得默认情况下iOS9变化问题无视与http协议的沟通。你的网址应该是https。但是,您可以在应用中为特定网域添加例外情况,或者允许您的应用允许所有http通信。
查看Documentation了解详细信息。

,以允许从您的应用程序的所有HTTP域,您应该添加

<key>NSAppTransportSecurity</key>                                                          
    <dict>                                                                 
     <key>NSAllowsArbitraryLoads</key>                                                         
     <true/>                                                                
    </dict> 

但由于苹果公司已经建议这些新设置,你应该选择添加例外,在您的应用程序这个特定的领域,而不是允许所有http域。检查这thread来实现这一点。

0

对于iOS 9,由于ATS(应用传输安全性)调用应该是HTTPS,因此您无法再调用HTTP。要使用HTTP链接工作,你应该插在Info.plist文件下列键禁用ATS:

<key>NSAppTransportSecurity</key> 
    <dict> 
      <key>NSAllowsArbitraryLoads</key><true/> 
    </dict> 

在Info.plist文件“NSAppTransportSecurity”像字典创建一个新的声音。 插入其中的关键“NSAllowsArbitraryLoads”像布尔并设置为YES

;-)

+0

而不是完全关闭它,只需将单个域的例外添加到info.plist。 – Abizern

+0

是的,例外情况会更好... – aleciuf