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("请求失败")

                        

                })

     

            }

            

        }

        

    }

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

    ios开发
  • 相关阅读:
    HBase编程 API入门系列之delete.deleteColumn和delete.deleteColumns区别(客户端而言)(4)
    证明,为什么HBase在创建表时,列簇是必须要,列可不要?
    HBase编程 API入门系列之delete(客户端而言)(3)
    HBase编程 API入门系列之get(客户端而言)(2)
    HBase编程 API入门系列之put(客户端而言)(1)
    Hadoop HBase概念学习系列之HBase里的时间戳(二十六)
    Zookeeper(1、3、5节点)集群安装
    hbase无法启动,The node /hbase is not in ZooKeeper
    HBase、Hive、MapReduce、Hadoop、Spark 开发环境搭建后的一些步骤(export导出jar包方式 或 Ant 方式)
    Hadoop HBase概念学习系列之hbase shell中执行java方法(高手必备)(二十五)
  • 原文地址:https://www.cnblogs.com/XieMinQiang/p/5275747.html
Copyright © 2011-2022 走看看