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,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 欢迎你们的阅读和赞赏、谢谢!