文档章节

[swift]-AFNetworking网络封装

XJDomain
 XJDomain
发布于 2016/08/02 14:29
字数 377
阅读 56
收藏 0
点赞 0
评论 0

1:定义一个网络工具类,如HttpTools,NetworkTools等等

在NetworkTools.swift类中:

这里采用单例封装:

import AFNetworking

// 枚举方式1
enum RequestType {
    case GET
    case POST
}

// 枚举方式2
enum RequestType1 : Int {
    case GET = 0
    case POST = 1
}

// 枚举方式3
enum RequestType2 : String {
    case GET = "GET"
    case POST = "POST"
}



class NetworkTools: AFHTTPSessionManager {

    /// let是线程安全的
    static let shareInstance : NetworkTools = {
       let tools = NetworkTools()
        tools.responseSerializer.acceptableContentTypes?.insert("text/html")
        return tools
    }()
}

// MARK: - 封装请求方法
extension NetworkTools {
    func request(methodType : RequestType, urlString : String, parameters : [String : AnyObject], finished:(result : AnyObject?,error : NSError?) -> ()) {
        
        // 定义成功的回调闭包:使用一个常量来接收它
        let successCallBack = { (task : NSURLSessionDataTask, result : AnyObject?) in
            finished(result: result, error: nil)
        }
        
        
        // 定义一个失败的回调闭包:使用一个常量来接收它
        let failureCallBack = { (task : NSURLSessionDataTask?, error : NSError) in
            finished(result: nil, error: error)
        }
    
        // 发送网络请求
        if methodType == .GET {
            GET(urlString, parameters: parameters, progress: nil, success: successCallBack, failure: failureCallBack)
        }else {
            POST(urlString, parameters: parameters, progress: nil, success: successCallBack, failure: failureCallBack)
        }
    }
}

 

 

2:在viewController.swift中调用网络请求接口

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        //print(NetworkTools.shareInstance)
        //print(NetworkTools.shareInstance)
    }
    
    override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
        /// 外面请求接口回调
        NetworkTools.shareInstance.request(.POST, urlString: "http://httpbin.org/post", parameters: ["name" : "lishengbing","age" : 106]) { (result, error) in
            if error != nil {
                print(error)
                return
            }
            
            print(result)
        }
    }
    

}

 

 

知识点:

1:swift中创建单例:

class NetworkTools: AFHTTPSessionManager {

    /// let是线程安全的
    static let shareInstance : NetworkTools = {
       let tools = NetworkTools()
        return tools
    }()
}

2:swift中枚举的定义:

// 枚举方式1
enum RequestType {
    case GET
    case POST
}

// 枚举方式2
enum RequestType1 : Int {
    case GET = 0
    case POST = 1
}

// 枚举方式3
enum RequestType2 : String {
    case GET = "GET"
    case POST = "POST"
}

 

 

意见反馈邮件:1415429879@qq.com
欢迎你们的阅读和赞赏、谢谢

 

© 著作权归作者所有

共有 人打赏支持
XJDomain
粉丝 15
博文 112
码字总数 44060
作品 0
嘉定
高级程序员
iOS源码补完计划--AFNetworking 3.1.0源码研读

参拜一下AFNetworking的源码。 第四篇源码、暂时来看也是iOS方向的最后一篇、撸完准备趁着热乎撸一撸网络协议。 目录 准备工作 功能模块 AFURLSessionManager/AFHTTPSessionManager AFNetwo...

kirito_song ⋅ 05/25 ⋅ 0

AFNetworking实现原理理解

NSURLSession: NSURLSession由三个基本模块构成: NSURLSession NSURLSessionConfiguation NSURLSessionTask NSURLSession相对于平时通信中的会话,但本身却不会进行网络数据传输,它会穿件多...

法斗斗 ⋅ 05/09 ⋅ 0

iOS源码补完计划--AFNetworking(一)

目录 前言 AFURLSessionManager AFHTTPSessionManager API注释Demo 参考 前言 AFNetworking第一篇 主要看了看AFURLSessionManager以及AFHTTPSessionManager相关的API AFN概述:《iOS源码补完计...

kirito_song ⋅ 05/15 ⋅ 0

swift4,网络请求工具Moya

在OC中,我们使用AFNetworking来进行网络请求,简洁方便。在swift中,我们使用Moya来进行网络请求,Moya封装了Alamofire,可以更加方便的进行网络请求。初次使用Moya,还是觉得稍稍有些不习惯...

小曼Study ⋅ 05/29 ⋅ 0

iOS源码补完计划--AFNetworking(二)

目录 前言 AFNetworkReachabilityManager.h AFNetworkReachabilityManager.m API注释Demo 参考资料 前言 AFNetworking源码第二篇 主要看了看AFNetworkReachabilityManager的内容 作为一个辅助...

kirito_song ⋅ 05/16 ⋅ 0

iOS源码补完计划--AFNetworking(三)

目录 前言 AFSecurityPolicy.h AFSecurityPolicy.m 参考资料 前言 AFNetworking源码第三篇 主要看了看AFSecurityPolicy的内容 负责网络安全策略(证书)的验证 作为一个辅助模块、代码量和文件...

kirito_song ⋅ 05/17 ⋅ 0

iOS源码补完计划--AFNetworking(四)

目录 前言 流程图 核心代码 请求头 请求体 AFHTTPRequestSerializer APIDemo 参考资料 前言 AFNetworking源码第四篇 主要看了看AFURLRequestSerialization的内容 负责网络请求NSMutableURLR...

kirito_song ⋅ 05/23 ⋅ 0

iOS源码补完计划--AFNetworking(五)

目录 前言 核心代码 APIDemo 参考资料 前言 AFNetworking源码第五篇、大概也是最后一篇 主要看了看AFURLResponseSerialization的内容 负责网络请求成功之后服务器返回的响应体进行格式化 代码...

kirito_song ⋅ 05/25 ⋅ 0

iOS Reachability检测网络状态

一、整体介绍 前面已经介绍了网络访问的NSURLSession、NSURLConnection,还有网页加载有关的webview,基本满足通常的网络相关的开发。 其实在网络开发中还有比较常用的就是网络状态的检测。苹...

robslove ⋅ 05/06 ⋅ 0

AFNetworking3详解

是iOS开发中最常用的第三方开源库之一,它主要用于进行网络请求。主要是对HTTP协议和iOS网络相关库的封装,读一读源码可以加深对HTTP协议和iOS网络编程的理解。 AFNetworking的结构 主要分为...

西瓜冰soso ⋅ 05/26 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Spring | IOC AOP 注解 简单使用

写在前面的话 很久没更新笔记了,有人会抱怨:小冯啊,你是不是在偷懒啊,没有学习了。老哥,真的冤枉:我觉得我自己很菜,还在努力学习呢,正在学习Vue.js做管理系统呢。即便这样,我还是不...

Wenyi_Feng ⋅ 今天 ⋅ 0

博客迁移到 https://www.jianshu.com/u/aa501451a235

博客迁移到 https://www.jianshu.com/u/aa501451a235 本博客不再更新

为为02 ⋅ 今天 ⋅ 0

win10怎么彻底关闭自动更新

win10自带的更新每天都很多,每一次下载都要占用大量网络,而且安装要等得时间也蛮久的。 工具/原料 Win10 方法/步骤 单击左下角开始菜单点击设置图标进入设置界面 在设置窗口中输入“服务”...

阿K1225 ⋅ 今天 ⋅ 0

Elasticsearch 6.3.0 SQL功能使用案例分享

The best elasticsearch highlevel java rest api-----bboss Elasticsearch 6.3.0 官方新推出的SQL检索插件非常不错,本文一个实际案例来介绍其使用方法。 1.代码中的sql检索 @Testpu...

bboss ⋅ 今天 ⋅ 0

informix数据库在linux中的安装以及用java/c/c++访问

一、安装前准备 安装JDK(略) 到IBM官网上下载informix软件:iif.12.10.FC9DE.linux-x86_64.tar放在某个大家都可以访问的目录比如:/mypkg,并解压到该目录下。 我也放到了百度云和天翼云上...

wangxuwei ⋅ 今天 ⋅ 0

PHP语言系统ZBLOG或许无法重现月光博客的闪耀历史[图]

最近在写博客,希望通过自己努力打造一个优秀的教育类主题博客,名动江湖,但是问题来了,现在写博客还有前途吗?面对强大的自媒体站点围剿,还有信心和可能型吗? 至于程序部分,我选择了P...

原创小博客 ⋅ 今天 ⋅ 0

IntelliJ IDEA 2018.1新特性

工欲善其事必先利其器,如果有一款IDE可以让你更高效地专注于开发以及源码阅读,为什么不试一试? 本文转载自:netty技术内幕 3月27日,jetbrains正式发布期待已久的IntelliJ IDEA 2018.1,再...

Romane ⋅ 今天 ⋅ 0

浅谈设计模式之工厂模式

工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 在工厂模式中,我们在创建对象时不会对客户端暴露创建逻...

佛系程序猿灬 ⋅ 今天 ⋅ 0

Dockerfile基础命令总结

FROM 指定使用的基础base image FROM scratch # 制作base image ,不使用任何基础imageFROM centos # 使用base imageFROM ubuntu:14.04 尽量使用官方的base image,为了安全 LABEL 描述作...

ExtreU ⋅ 昨天 ⋅ 0

存储,对比私有云和公有云的不同

导读 说起公共存储,很难不与后网络公司时代的选择性外包联系起来,但尽管如此,它还是具备着简单和固有的可用性。公共存储的名字听起来也缺乏专有性,很像是把东西直接堆放在那里而不会得到...

问题终结者 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部