创建: 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发送信息
   
   
   
   
   
   
   
   

【WIP】iOS 网络通讯的更多相关文章

  1. iOS网络通讯——监测网络状态:Reachability(可达性)

    1.iOS平台是按照一直有网络连接的思路来设计的,开发者利用这一特点创造了很多优秀的第三方应用.大多数的iOS应用都需要联网,甚至有些应用严重依赖网络,没有网络就无法正常工作. 2.在你的应用尝试通过 ...

  2. iOS网络相关知识总结

    iOS网络相关知识总结 1.关于请求NSURLRequest? 我们经常讲的GET/POST/PUT等请求是指我们要向服务器发出的NSMutableURLRequest的类型; 我们可以设置Reque ...

  3. iOS网络编程模型

    iOS网络编程层次结构也分为三层: Cocoa层:NSURL,Bonjour,Game Kit,WebKit Core Foundation层:基于 C 的 CFNetwork 和 CFNetServ ...

  4. 如何在Windows系统上用抓包软件Wireshark截获iPhone等网络通讯数据

    http://www.jb51.net/os/windows/189090.html 今天给大家介绍一种如何在Windows操作系统上使用著名的抓包工具软件Wireshark来截获iPhone.iPa ...

  5. iOS 网络编程模式总结

    IOS 可以采用三类api 接口进行网络编程,根据抽象层次从低到高分别为socket方式.stream方式.url 方式. 一 .socket 方式 IOS 提供的socket 方式的网络编程接口为C ...

  6. iOS 即时通讯,从入门到 “放弃”?

    原文链接:http://www.jianshu.com/p/2dbb360886a8 本文会用实例的方式,将 iOS 各种 IM 的方案都简单的实现一遍.并且提供一些选型.实现细节以及优化的建议. — ...

  7. iOS即时通讯之CocoaAsyncSocket源码解析二

    原文 前言 本文承接上文:iOS即时通讯之CocoaAsyncSocket源码解析一 上文我们提到了GCDAsyncSocket的初始化,以及最终connect之前的准备工作,包括一些错误检查:本机地 ...

  8. iOS即时通讯之CocoaAsyncSocket源码解析一

    申明:本文内容属于转载整理,原文连接 前言: CocoaAsyncSocket是谷歌的开发者,基于BSD-Socket写的一个IM框架,它给Mac和iOS提供了易于使用的.强大的异步套接字库,向上封装 ...

  9. dicom网络通讯入门(3)

    接下来可以进行消息传递了 ,也就是dimse ,再来复习下 什么是dimse .n-set  n-create c-echo 这些都是dimse  他们都是属于一种结构的pdu 那就是tf-pdu(传 ...

随机推荐

  1. VS + Qt5Designer + Anaconda环境配置

    最近打算做一个模型训练工具,从来都不喜欢做UI的我,最终把目光放在了QtDesigner上.配环境的过程中在网上翻阅了不少博客,但大多是pycharm或者是VScode,使用VS的似乎不多.所以打算记 ...

  2. 登录和注册(Js)的写法

    今天在做小组项目的时候发现登录和注册的使用不是很熟,记录下来: <script> //弹出框中的css部分 input { font-family: Arial, sans-serif;} ...

  3. spring 过滤器简介

    spring 过滤器简介 过滤器放在容器结构的什么位置 过滤器放在web资源之前,可以在请求抵达它所应用的web资源(可以是一个Servlet.一个Jsp页面,甚至是一个HTML页面)之前截获进入的请 ...

  4. error LNK1112: module machine type 'X86' conflicts with target machine type 'x64'

    1 这个error是什么原因造成的 cmake默认选择的是x86,即32位的生成子. 2 怎么解决这个error 在cmake ..的时候,在后面加上“-G "Visual Studio 1 ...

  5. The Apache Thrift API client/server architecture

    http://thrift.apache.org/ The Apache Thrift software framework, for scalable cross-language services ...

  6. LightOJ1259 Goldbach`s Conjecture —— 素数表

    题目链接:https://vjudge.net/problem/LightOJ-1259 1259 - Goldbach`s Conjecture    PDF (English) Statistic ...

  7. iOS7默认状态栏文字颜色为黑色,项目需要修改为白色。

    1在Info.plist中设置UIViewControllerBasedStatusBarAppearance 为NO2 在需要改变状态栏颜色的 AppDelegate中在 didFinishLaun ...

  8. 10个常见的 Android 新手误区

    在过去十年的移动开发平台中,作为资深的移动开发人员,我们认为Android平台是一个新手最广为人知的平台.它不仅是一个廉价的工具,而且有着良好的开发社区,以及从所周知的编程语言(Java),使得开发A ...

  9. python学习笔记:第二天(基本数据类型)

    Python3 基本数据类型 1.标准数据类型 Python3中有六个标准的数据类型:Number(数字).String(字符串).List(列表).Tuple(元组).Sets(集合).Dictio ...

  10. SSL handshake_decode_error

    查看布署在Amazon服务器上的日志时,发现如下错误: generated SERVER ALERT: Fatal - Handshake Failure - handshake_decode_err ...