创建: 2018/06/05

网络通讯的基础
 App Transport Security

iOS9以后增加的功能

只允许满足Apple标准的https通信

● 对ATS进行改动的话发布的审查时有可能被询问理由

● 设定项目

 Allow Arbitrary Loads  允许所有HTTP通信
 NSExceptionDomains  对单独域名进行设定
 NSAllowsArbitraryLoadsInWebContent  仅允许WKWebView, UIWebView进行不安全通信
 URLSession

● 方法

 dataTask  从URL获取data
 downloadTask  将从URL获得的内容暂时放入文件保存
 uploadTask  上传数据
 resume  开始通信(暂停的话则是继续通信)
 
class BasicViewController: UIViewController {

    @IBOutlet weak var sampleTextView: UITextView!

    @IBOutlet weak var activityIndicator: UIActivityIndicatorView!

    override func viewDidLoad() {
super.viewDidLoad()
startSampleRequest()
} override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
} } //------------------------------------------------------------------------------------
// action setting
//------------------------------------------------------------------------------------
extension BasicViewController {
func startSampleRequest() {
guard let url = URL.init(string: "http://localhost:3001") else { return }
// guard let url = URL.init(string: "https://www.baidu.com/") else { return }
let session = URLSession.shared
let task = session.dataTask(with: url) { (data, response, error) in
if error != nil {
print("error: \(String(describing: error))")
return
}
guard let data = data else { return }
DispatchQueue.main.async {
sleep() // 为了测试效果, 暂停2秒
let text = String.init(data: data, encoding: String.Encoding.utf8)
self.toggleActivityIndicator(target: self.activityIndicator)
self.sampleTextView.text = text
}
}
task.resume()
}
} //------------------------------------------------------------------------------------
// style setting
//------------------------------------------------------------------------------------
extension BasicViewController {
private func toggleActivityIndicator(target: UIActivityIndicatorView) {
if target.isAnimating {
target.stopAnimating()
} else {
target.startAnimating()
}
}
}
   
   
   
   
   
通过通讯获取信息
   
   
   
   
   
   
   
   
向API发送信息
   
   
   
   
   
   
   
   

最新文章

  1. 程序猿都没对象,JS竟然有对象?
  2. SharePoint 2013 搭建app本地开发环境
  3. TSQL order by 子句中排序列的多种写法
  4. 插头DP专题
  5. JavaScript实现Ajax小结
  6. 初学Java,第一段代码
  7. idea14教程
  8. 11g RAC日志体系(cluster,database,asm,scan日志,ADRCI工具的使用)
  9. 线程池(C#)
  10. iframe自适应高度的问题
  11. iOS 操作系统整体架构层次讲解
  12. 视觉SLAM中相机详解
  13. Glide 加载部分圆角图片
  14. 【原创】IO流:读写操作研究(输入流)
  15. (二 -3-1) 天猫精灵接入Home Assistant-自动发现Mqtt设备--灯系列 esp8266程序
  16. 一个有关FWT&FMT的东西
  17. Qt5OpenGL.术语01
  18. phpBB3.2 自动检测浏览器语言
  19. 【网络编程】使用getnameinfo()/getaddrinfo()/InetPton()
  20. 【原】Spring整合Redis(第二篇)—SDR环境搭建具体步骤

热门文章

  1. 通过代码实现自动判断是手机端还是PC端跳转
  2. MongoDB资料汇总专题(转)
  3. codevs1032
  4. HUD 2031: 进制转换
  5. 如果在 Code First 模式下使用,则使用 T4 模板为 Database First 和 Model First
  6. 初识kbmmw 中的smartbind功能
  7. EasyDarwin开源流媒体云平台之语音对讲功能设计与实现
  8. self = [super init]的解释
  9. Xcode工程断点调试失效
  10. MongoDB 倾向于将数据都放在一个 Collection 下吗?