Swift封装AFNetworking网络请求

本文介绍了一个使用Swift语言实现的网络请求封装方案。该方案通过枚举定义了HTTP请求方法,并利用AFHTTPSessionManager进行网络请求操作。此外,还提供了一个共享实例来简化请求流程,并通过回调函数处理请求结果。
import UIKit



// Swift中的枚举支持任意类型

enum WBHTTPMethod {

    case GET

    case POST

}



// 网络管理工具

class WBNetworkManager: AFHTTPSessionManager {

    

    // 静态区 、 常量、闭包/ 在第一次访问时,执行闭包,并且将结果保存在shared常量中

    static let shared = WBNetworkManager()

    

    // 封装AFN的 get和post请求

    func request(method: WBHTTPMethod = .GET,URLString: String, parameters: [String: AnyObject]?, completon:(json: AnyObject?, isSuccess: Bool)->()) {

        

        // 成功回调

        let success = { (task:URLSessionDataTask, json:AnyObject?)->() in

            completon(json: json, isSuccess: true)

        }

        

        // 失败回调

        let failure = { (task:URLSessionDataTask?, error:NSError)->() in

            

            print("网络请求错误\(error)")

            

            // 针对 403 处理用户 token过期

            if (task?.response as? HTTPURLResponse)?.statusCode == 403 {

                print("token过期了")

                

                // FIXME:发送通知(本方法不知道被谁调用,谁接收到通知,谁处理)

            }

            

            completon(json: nil, isSuccess: false)

        }

        

        if method == .GET {

            get(URLString, parameters: parameters, progress: nil, success: success, failure: failure)

            

        }else{

            post(URLString, parameters: parameters, progress: nil, success: success, failure: failure)

        }

    }

    

}

调用:

WBNetworkManager.shared.tokenRequest(URLString: urlString, parameters: nil) { (json, isSuccess) in

            print(json)

            

            // 从json中获取 statuses 字典数组,如果as?失败 result = nil

            let result = json?["statuses"] as? [[String:AnyObject]]

            

            completion(list: result, issuccess: isSuccess)

            

        }

转载于:https://my.oschina.net/hehongbo/blog/747751

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值