zoukankan      html  css  js  c++  java
  • iOS开发--Swift 基于AFNetworking 3.0的网络请求封装

      Swift和OC基于AFNetworking的网络请求流程相同, 就是语法不同, 对于Swift语法不是很清楚的同学, 建议多看看API文档, 自己多多尝试. 写过OC的应该都明白每句话做什么的, 就不过多解释了.

      之前有讲过如何进行混编, 所以集成AFNetworking的过程就不再赘述

      直接上代码, 不废话,

    import UIKit

     

    class InternetDataRequeset {

      //Post请求时, Body字符串转换成字典方法

      //设置类型为静态方法 

        static func changeStringToDictionary(string : String)->NSDictionary{

            let dic: NSMutableDictionaryNSMutableDictionary()

            let array = string.componentsSeparatedByString("&")

            for str : String in array{

                let tempArray = str.componentsSeparatedByString("=")

                dic.setObject(tempArray[1], forKey: tempArray[0])

            }

            return dic

        }

      //静态网络请求方法, GET请求, POST请求均适用, POST需要参数字典, 可由上一个方法获得

      //urlString: 网络请求链接字符串

      //bodyDic: Post请求参数字典(可选类型)

      //data()->(): 闭包函数, 基本等价于OC中的block, 用于数据的回调.

        static func getDataByString(var urlString urlSting: String, bodyDic: NSDictionary!, data: (data: AnyObject) -> ()){

            //字符串的转码

            urlSting = urlSting.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet())!

            

            //创建管理者对象

            let manager = AFHTTPSessionManager()

            

            //设置允许请求的类别

            manager.responseSerializer.acceptableContentTypes = NSSet(objects: "text/plain", "text/json", "application/json","text/javascript","text/html", "application/javascript", "text/js") as? Set<String>

            

            //开始请求

            if bodyDic == nil {

                manager.GET(urlSting, parameters: nil, progress: { (downloadProgress: NSProgress) -> Void in

      

                    }, success: { (task: NSURLSessionDataTask, responseObject: AnyObject?) -> Void in

                        data(data: responseObject!)

                    }, failure: { (task: NSURLSessionDataTask?, error : NSError) -> Void in

                        print("请求失败")

                        

                })

                

            }

            else{

                

                manager.POST(urlSting, parameters: bodyDic, progress: { (downloadProgress: NSProgress) -> Void in

                    

                    }, success: { (task: NSURLSessionDataTask, responseObject: AnyObject?) -> Void in

                        data(data :responseObject!)

                    }, failure: { (task: NSURLSessionDataTask?, error : NSError) -> Void in

                        print("请求失败")

                        

                })

     

            }

            

        }

        

    }

      这只是基本的网络请求, 如果需要对请求头尾进行加工, 修改下函数即可.

  • 相关阅读:
    谷歌 chrome 和 safari 浏览器 td innerHTML Textbox 部分显示不全
    SQLServer 日期转换字符串格式
    GNU 通用公共授權 第三版
    程序员的十个层次 你属于哪一层?
    一个因为缺少括号()引发的SQL存储过程不能执行的问题。
    关于实现字符串表达式求值
    Windows api数据类型【转载】
    x86—EFLAGS寄存器详解【转载】
    python PIL图像处理
    python学习笔记
  • 原文地址:https://www.cnblogs.com/JianweiWang/p/5145683.html
Copyright © 2011-2022 走看看