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()   
        }
    }
  • 相关阅读:
    洛谷 1195 口袋的天空
    洛谷1955 程序自动分析
    【洛谷3295】[SCOI2016]萌萌哒
    洛谷2024 食物链
    八数码问题
    Codeforces Round #442 (Div. 2)
    Oracle 中truncate与delete的区别
    git命令提交步骤和解决冲突的
    git 更新代码到本地
    12、Python中的包
  • 原文地址:https://www.cnblogs.com/pengsi/p/5905621.html
Copyright © 2011-2022 走看看