文档章节

[swift]-AFNetworking网络封装

XJDomain
 XJDomain
发布于 2016/08/02 14:29
字数 377
阅读 63
收藏 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下的Http库AFNetworking

在iOS下开发一直是用ASIHTTPRequest库,ASIHTTPRequest已经停止更新,看了这个文章http://www.oschina.net/news/61416/github-top-100-objective-c-projects (原文https://github.com/Aufr......

vane_
2015/04/11
0
0
AFNetWorking用法及缓存处理

AFNetWorking 在IOS开发中是一个经常会用的第三方开源库,其最好处是维护及时,源码开源。 常用GET与POST请求方法: POST请求: GET请求: 这里有一个地方需要注意, 这个类方法我们点进源码...

珲少
2015/04/02
0
3
注册登陆时动态获取Host IP

当我们要AFNetWorking获取注册登陆网址时,有些时候会发现Host 提供的是一个动态IP,每次所获取的网址都不相同,特意封装了一个获取IP的方法 #import <Foundation/Foundation.h> import "FQ...

征的一般般
2015/08/24
0
0
CocoaPods 安装和使用教程

用淘宝镜像像下载安装: $ gem sources --remove https://rubygems.org///等有反应之后再敲入以下命令$ gem sources -a https://ruby.taobao.org/ 为了验证你的Ruby镜像是并且仅是taobao,可...

Jack088
2015/05/26
0
0
AFNetworking、MKNetworkKit和ASIHTTPRequest比较

之前一直在使用ASIHTTPRequest作为网络库,但是由于其停止更新,iOS7上可能出现更多的问题,于是决定更换网络库。 目前比较流行的网络库主要有AFNetworking和MKNetworkKit,经过一番google后...

Crane0111
2013/10/25
0
3

没有更多内容

加载失败,请刷新页面

加载更多

下一页

谈谈神秘的ES6——(五)解构赋值【对象篇】

上一节课我们了解了有关数组的解构赋值相关内容,这节课,我们接着,来讲讲对象的解构赋值。 解构不仅可以用于数组,还可以用于对象。 let { foo, bar } = { foo: "aaa", bar: "bbb" };fo...

JandenMa
19分钟前
0
0
OSChina 周一乱弹 —— 有人要给本汪介绍妹子啦

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @莱布妮子 :分享水木年华的单曲《中学时代》@小小编辑 手机党少年们想听歌,请使劲儿戳(这里) @须臾时光:夏天还在做最后的挣扎,但是晚上...

小小编辑
26分钟前
5
1
centos7安装redis及开机启动

配置编译环境: sudo yum install gcc-c++ 下载源码: wget http://download.redis.io/releases/redis-3.2.8.tar.gz 解压源码: tar -zxvf redis-3.2.8.tar.gz 进入到解压目录: cd redis-3......

hotsmile
48分钟前
0
0
PopupWindow总结和通用PopupWindow

PopupWindow 注意点: 设置PopupWindow的宽高,容易忘记,没有设置宽高在某些情况下会不展示。 基础设置少不了 pop.setBackgroundDrawable(new BitmapDrawable());pop.setFoucusable(true)...

DaSheng丶
56分钟前
0
0
Confluence 6 数据库和临时目录

数据库 所有的其他数据库,包括有页面,内容都存储在数据库中。如果你安装的 Confluence 是用于评估或者你选择使用的是 Embedded H2 Database 数据库。数据库有关的文件将会存储在 database...

honeymose
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部