美文网首页
Alamofire(1)

Alamofire(1)

作者: 忆痕无殇 | 来源:发表于2019-08-15 20:07 被阅读0次

网络基础

1:三次握手(创建网络连接)

三次握手示意图.jpg

通过Wireshark抓包可以看到三次握手的过程。这里就不在截图看了。
A与B实现相互连接的最少次数是三次。A先发送请求告诉B我要跟你连接了啊。B返回可以之后A在发送一条确认连接。

2:四次挥手(断开网络连接)

四次挥手.png

四次挥手的过程就是A说要跟B断开连接,B说行,B断开连接。A断开。
断开连接需要相互断开得到回应。会存在断开连接不完全的情况。例如:超负荷负载,没时间响应分手。这时候就会加心跳包监听让对方知道自己还活着。

3:七层协议

1)应用层 2)表示层 3)会话层 4)传输层 5)网络层 6)数据链路层 7)物理层
[图片上传中...(七层协议.jpg-445d2e-1565869716505-0)]
上图可见发送端应用层传输报文数据过来,传输层添加TCP首部,到网络层添加IP首部,到链路层添加以太网首部。经过接收端的链路层去掉以太网首部,网络层去掉IP首部,传输层去掉TCP首部。得到原始数据到接收端接受。

4:网络请求

1)URLSession基本网络请求

URLSession.shared.dataTask(with: url) { (data, response, error) in
            if error == nil {
                print("请求成功\(String(describing: response))" )
            }
        }.resume()

注:一定要.resume()调用。
2)正常写网络请求

 let configuration = URLSessionConfiguration.background(withIdentifier: self.createID())

        let session = URLSession.init(configuration: configuration, delegate: self, delegateQueue: OperationQueue.main)
        
        session.downloadTask(with: url).resume()

URLSessionConfiguration有三种模式

    open class var `default`: URLSessionConfiguration { get }

    open class var ephemeral: URLSessionConfiguration { get }

    
    @available(iOS 8.0, *)
    open class func background(withIdentifier identifier: String) -> URLSessionConfiguration

1)default:默认模式多了一个沙盒缓存器 缓存证书。
2)ephemeral:不缓存证书,所有内容的生命周期与session相同,当session无效时,所有内容自动释放。
3)background:后台模式,进入后台可下载。
获取沙盒大小和内存大小的方法

        let configuration1 = URLSessionConfiguration.default
        let configuration2 = URLSessionConfiguration.ephemeral
        print("沙盒大小: \(String(describing: configuration1.urlCache?.diskCapacity))")
        print("内存大小: \(String(describing: configuration1.urlCache?.memoryCapacity))")
        print("沙盒大小: \(String(describing: configuration2.urlCache?.diskCapacity))")
        print("内存大小: \(String(describing: configuration2.urlCache?.memoryCapacity))")

5:进入Alamofire

pod导入Alamofire

target '****' do
  # Comment the next line if you don't want to use dynamic frameworks
  use_frameworks!
pod 'Alamofire', '~> 4.8.0'
  # Pods for 002-Alamofire初探

网络请求具体实现

    let urlStr = "http://apis.haoservice.com/weather/city"
  Alamofire.request(urlStr)
            .responseJSON { (response) in
            print(response)
        }

就是这么简单就讲string请求回数据转成了json。

相关文章

网友评论

      本文标题:Alamofire(1)

      本文链接:https://www.haomeiwen.com/subject/zortsctx.html