美文网首页iOS学习专题iOS学习笔记
swift发送JSON数据给服务器

swift发送JSON数据给服务器

作者: 哭与行 | 来源:发表于2017-08-04 17:20 被阅读0次

    最近做的项目其中有一条增加联系人的需求,,而且要求是传json格式的字符串给后台,而且字符串是一个字典类型的,首先项目用OC写的,弄了段时间终于成功了,然后今天使用swift重新写项目玩,swift发送JSON数据给服务器在网上找了半天都没有找到答案,经过努力终于实现了弄了几个小时终于弄通了.在此分享一下,而且有个alamofire的问题向各位大神请教.

    问题:在使用alamofire发送请求时候,调用发送json格式总是报错,求答案!!!

    网上找答案是:encoding:ParameterEncoding.JSON,但是我怎么用怎么改都是错...,最后使用了AFN框架才实现了功能.

    首先讲下OC中发送JSON格式数据给服务器:如下图↓

    在此说明一个问题:关于AFN内存泄漏问题

    //    AFHTTPSessionManager *mgr = [AFHTTPSessionManager manager];

    使用上面方式请求数据会导致内存泄漏,因为他不是一个单例!所以开发中我们要将AFHTTPSessionManager写成单例再去调用,昨天instrument测试无意间发现的,网上很多这个答案

    AFHTTPSessionManager *mgr = [self getManager];(自己写的一个单例)

    mgr.requestSerializer = [AFJSONRequestSerializer serializer];(发送json格式给后台)

    下面要说的是: swift发送json格式字符串给后台,使用AFN,如下图 ↓

    如果请求要设置请求头,切记一定要讲请求头设置放在manager.requestSerializer = AFJSONRequestSerializer()之后,我就因为放在之前调试了很久...

    调用方法:至此调用json格式请求给服务器就成功了!!!

    贴代码:方便使用:

    class HJNetworkManager: AFHTTPSessionManager {

    static let shared = HJNetworkManager()

    func json_request(method:HJHTTPMethod = .POST, URLString:String, parameters:[String : AnyObject]?,headerValue:String, completion:@escaping (_ json :AnyObject?, _ :Bool) -> ()){

    // 成功回调

    let success = { (task:URLSessionDataTask ,json:Any?)->Void in

    completion(json as AnyObject?, true)

    }

    // 失败回调

    let failure = { (task:URLSessionDataTask?, error:Error)->() in

    print("网络请求错误:\(error)")

    completion(nil, false)

    }

    let manager = AFHTTPSessionManager()

    // json请求

    manager.requestSerializer = AFJSONRequestSerializer()

    // 设置请求头

    manager.requestSerializer.setValue(headerValue, forHTTPHeaderField: "token")

    if method == .POST {

    manager.post(URLString, parameters: parameters, progress: nil, success: success, failure: failure)

    }else{

    manager.get(URLString, parameters: parameters, progress: nil, success: success, failure: failure )

    }

    }

    }

    仅供大家参考,不正确之处望大神批评指正,大家一起进步!~☺️

    相关文章

      网友评论

        本文标题:swift发送JSON数据给服务器

        本文链接:https://www.haomeiwen.com/subject/zgqblxtx.html