美文网首页
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