封装AFNetworking网络工具类(Swift)

封装AFNetworking网络工具类(Swift)

开始

//
//  NetworkTools.swift
//  测试-01-AFN

import UIKit
import AFNetworking

/// 请求方法枚举
enum TKRequestMethod: String{
    case GET = "GET"
    case POST = "POST"

}


//MARK: - 网络工具
class NetworkTools: AFHTTPSessionManager {

    //单例
    static let sharedTools: NetworkTools = {
        
        let tools = NetworkTools(baseURL: nil)
        
        //设置反序列化数据格式 -系统会自动将OC框架中的NSSet转换成 Set
        tools.responseSerializer.acceptableContentTypes?.insert("text/html")
        return tools
    }()
    
}

//MARk: - 封装AFN 网络方法
extension NetworkTools {

    func request(method: TKRequestMethod, Urlstring: String,parameters: [String:AnyObject]?, finished:(result: AnyObject?,error: NSError?)->()){
   
        if method == TKRequestMethod.GET {
            GET(Urlstring, parameters: parameters, success: { (_, result) -> Void in
                
                finished(result: result, error: nil)
                
                }) { (_, error) -> Void in
                    
                    //在开发网络应用的时候,错误虽然不要提示给用户,但是一定要输出,我们程序猿一定要知道
                    print(error)
                    finished(result: nil, error: error)
                }
        }else{
        
            POST(Urlstring, parameters: parameters, success: { (_, result) -> Void in
                
                finished(result: result, error: nil)
                
                }) { (_, error) -> Void in
                    
                    //在开发网络应用的时候,错误虽然不要提示给用户,但是一定要输出,我们程序猿一定要知道
                    print(error)
                    finished(result: nil, error: error)
                }
        
            }
        
    }
    
    
}

sdaadd


//
//  ViewController.swift
//  测试-01-AFN

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
     
        NetworkTools.sharedTools.request(TKRequestMethod.POST,Urlstring: "http://httpbin.org/post", parameters: ["name": "zhangsan"]) { (result,error) -> () in
            
            print(result)
        }
        
    }


}


 继续

//
//  NetworkTools.swift
//  测试-01-AFN

import UIKit
import AFNetworking

/// 请求方法枚举
enum TKRequestMethod: String{
    case GET = "GET"
    case POST = "POST"

}


//MARK: - 网络工具
class NetworkTools: AFHTTPSessionManager {

    //单例
    static let sharedTools: NetworkTools = {
        
        let tools = NetworkTools(baseURL: nil)
        
        //设置反序列化数据格式 -系统会自动将OC框架中的NSSet转换成 Set
        tools.responseSerializer.acceptableContentTypes?.insert("text/html")
        return tools
    }()
    
}

//MARk: - 封装AFN 网络方法
extension NetworkTools {

    /// 网络请求
    ///
    /// - parameter method:     GET / POST
    /// - parameter URLString:  URLString
    /// - parameter parameters: 参数字典
    /// - parameter finished:   完成回调
    func request(method: TKRequestMethod, Urlstring: String,parameters: [String:AnyObject]?, finished:(result: AnyObject?,error: NSError?)->()){
        
        //定义成功回调
        let success = {(task: NSURLSessionDataTask, result: AnyObject) -> Void in
        
             finished(result: result, error: nil)
        }
        
        //定义失败回调
        let failure = { (task: NSURLSessionDataTask?, error: NSError) -> Void in
          
            print(error)
            finished(result: nil, error: error)
            
        }
   
        
        if method == TKRequestMethod.GET {
        
            GET(Urlstring, parameters: parameters, success: success, failure: failure)
        }else{
            
            POST(Urlstring, parameters: parameters, success: success, failure: failure)
        }
        

        
//        if method == TKRequestMethod.GET {
//            GET(Urlstring, parameters: parameters, success: { (_, result) -> Void in
//                
//                finished(result: result, error: nil)
//                
//                }) { (_, error) -> Void in
//                    
//                    //在开发网络应用的时候,错误虽然不要提示给用户,但是一定要输出,我们程序猿一定要知道
//                    print(error)
//                    finished(result: nil, error: error)
//                }
//        }else{
//        
//            POST(Urlstring, parameters: parameters, success: { (_, result) -> Void in
//                
//                finished(result: result, error: nil)
//                
//                }) { (_, error) -> Void in
//                    
//                    //在开发网络应用的时候,错误虽然不要提示给用户,但是一定要输出,我们程序猿一定要知道
//                    print(error)
//                    finished(result: nil, error: error)
//                }
//        
//            }
        
    }
    
    
}



转载于:https://my.oschina.net/TaciturnKnightYQ/blog/540972

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值