zoukankan      html  css  js  c++  java
  • Swift3.0封装 AFN 的 GET&POST网络请求

    //
    //  PSNetWorkManage.swift
    //  WeiBoSwift
    //
    //  Created by 思 彭 on 16/9/25.
    //  Copyright © 2016年 思 彭. All rights reserved.
    //
    
    import UIKit
    import AFNetworking
    
    // Swift的枚举支持任意数据类型,不需要,分隔
    enum PSHTTPMethod{
        case GET
        case POST
    }
    
    /// 网络管理工具
    class PSNetWorkManage: AFHTTPSessionManager {
    
        // 单例
        static let shared = PSNetWorkManage()
        
    
        // MARK:- get请求
        func getWithPath(path: String,paras: Dictionary<String,Any>?,success: @escaping ((_ result: Any) -> ()),failure: @escaping ((_ error: Error) -> ())) {
            
            var i = 0
            var address = path
            if let paras = paras {
                
                for (key,value) in paras {
                    
                    if i == 0 {
                        
                        address += "?(key)=(value)"
                    }else {
                        
                        address += "&(key)=(value)"
                    }
                    
                    i += 1
                }
            }
            
            let url = URL(string: address.addingPercentEncoding(withAllowedCharacters: CharacterSet.urlQueryAllowed)!)
            
            let session = URLSession.shared
            
            let dataTask = session.dataTask(with: url!) { (data, respond, error) in
                
                if let data = data {
                    
                    if let result = try? JSONSerialization.jsonObject(with: data, options: .allowFragments){
                        
                        success(result)
                    }
                }else {
                    
                    failure(error!)
                }
            }
            dataTask.resume()
        }
        
        
        // MARK:- post请求
        func postWithPath(path: String,paras: Dictionary<String,Any>?,success: @escaping ((_ result: Any) -> ()),failure: @escaping ((_ error: Error) -> ())) {
            
            var i = 0
            var address: String = ""
            
            if let paras = paras {
                
                for (key,value) in paras {
                    
                    if i == 0 {
                        
                        address += "(key)=(value)"
                    }else {
                        
                        address += "&(key)=(value)"
                    }
                    
                    i += 1
                }
            }
            let url = URL(string: path)
            var request = URLRequest.init(url: url!)
            request.httpMethod = "POST"
            print(address)
            request.httpBody = address.data(using: .utf8)
            let session = URLSession.shared
            let dataTask = session.dataTask(with: request) { (data, respond, error) in
                
                if let data = data {
                    
                    if let result = try? JSONSerialization.jsonObject(with: data, options: .allowFragments) {
                        
                        success(result)
                    }
                    
                }else {
                    failure(error!)
                }
            }
            dataTask.resume()   
        }
    }
  • 相关阅读:
    从请假日期列表中取得请假起止日期
    存储过程编写经验和优化措施
    安装IE8不能调试VS2003的解决办法
    javascript驗證若干DropDownList是否有選择
    欢迎光临C/S框架网 www.csframework.com
    C#开发框架钢铁贸易进销存系统演示视频
    基于.Net C/S结构系统开发框架V2.2正式发布!
    C#.NET Winform+WebService开发框架完整版本
    C#.Net C/S快速开发框架V2.2版本介绍
    专注C# .Net C/S结构系统开发框架,C/S框架网
  • 原文地址:https://www.cnblogs.com/pengsi/p/5905621.html
Copyright © 2011-2022 走看看