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()   
        }
    }
  • 相关阅读:
    CSS强制换行
    Android 软件开发的盈利模式
    比较Collection 和Collections的区别
    Jsp 中taglib标签的妙用
    常用搜索引擎大全
    Jsp 中登陆界面的实现方法
    Jsp 中JavaScript 和 Java代码的异步执行特点
    Jsp struts 标准配置测试版
    div demo
    多线程模拟银行业务调度系统
  • 原文地址:https://www.cnblogs.com/pengsi/p/5905621.html
Copyright © 2011-2022 走看看