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()   
        }
    }
  • 相关阅读:
    关于ORA-04091异常的出现原因,以及解决方案
    <Interview problem>二进制加法
    Hadoop日志文件分析系统
    Android studio安装
    weex环境配置
    weex构建项目
    参数保存
    下拉搜索的小白demo
    angularJs中$http获取后台数据实例(搜集到的)
    前后台对接angularjs(搜集的)
  • 原文地址:https://www.cnblogs.com/pengsi/p/5905621.html
Copyright © 2011-2022 走看看