拿知乎日报项目练练手,学习Swift(2.0)。
知乎日报API来源于这里
从iOS9.0
和OS X 10.11
开始,苹果引入了App Transport Security(ATS)
技术,增加了网络传输的安全性,苹果官方说明文档在这里
练手的项目关心啥安全啊,我选择直接关闭ATS
!方法参考自这里。
在Info.plist
文件中添加如下项关闭ATS
:
<key>NSAppTransportSecurity</key>
<dict>
<!--Include to allow all connections (DANGER)-->
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
若要使用ATS
,添加如下项:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>news-at.zhihu.com</key>
<dict>
<!--Include to allow subdomains-->
<key>NSIncludesSubdomains</key>
<true/>
<!--Include to allow HTTP requests-->
<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
<true/>
<!--Include to specify minimum TLS version-->
<key>NSTemporaryExceptionMinimumTLSVersion</key>
<string>TLSv1.1</string>
</dict>
</dict>
</dict>
说明:NSExceptionDomains
字典列举出所有使用到的服务器域名,上例只列举了一个,即知乎日报的API服务器域名news-at.zhihu.com
。
网络库使用Alamofire(swift-2.0)
发送网络请求,获得JSON格式的响应数据:
let url_string = "http://news-at.zhihu.com/api/4/news/latest"
Alamofire.request(.GET, url_string).responseJSON { (_, _, result, _) -> Void in
if let obj = result.value {
let dict = obj as! NSDictionary
// do something ...
}
}
从网络下载图片:
let image_url_string = "http://pic3.zhimg.com/9d22a64c7b3d365025d9d3498501bdca.jpg"
Alamofire.request(.GET, image_url_string).response(completionHandler: { (_, _, data, _) -> Void in
if let imagedata = data {
let image = UIImage(data: imagedata)
// do something ...
}
})