博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS开发--Swift 基于AFNetworking 3.0的网络请求封装
阅读量:7059 次
发布时间:2019-06-28

本文共 1948 字,大约阅读时间需要 6 分钟。

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

                    

            })

 

        }

        

    }

    

}

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

转载于:https://www.cnblogs.com/JianweiWang/p/5145683.html

你可能感兴趣的文章
Hackers’ Crackdown-----UVA11825-----DP+状态压缩
查看>>
Waiting Processed Cancelable ShowDialog
查看>>
[leetcode]Spiral Matrix
查看>>
hdu 1232 畅通工程(并查集)
查看>>
在github上写个人简历——先弄个主页
查看>>
用jquery实现遮罩层
查看>>
POJ 2229 Sumsets(技巧题, 背包变形)
查看>>
啥时候js单元测试变的重要起来?
查看>>
使用strtotime和mktime时参数为0时返回1999-11-30的时间戳问题
查看>>
php mysql 扩展安装
查看>>
Thrift架构~目录
查看>>
c++ 调用matlab程序
查看>>
一个cocoapods问题的解决,希望能帮助到遇到相似情况的人
查看>>
AsyncHttpClient来完成网页源代码的显示功能,json数据在服务器端的读取还有安卓上的读取...
查看>>
Java线程池使用说明
查看>>
POSTGRESQL 创建表结构、修改字段、导入导出数据库(支持CSV)
查看>>
POJ训练计划2299_Ultra-QuickSort(归并排序求逆序数)
查看>>
PHP 语法
查看>>
LayoutInflater的使用
查看>>
修改用户进程可打开文件数限制(转)
查看>>