之前用OC寫代碼時候,直接用AFN可以實現(xiàn)傳json,swift項目中也有json傳值,但都是有key的,key={}格式,現(xiàn)在后臺必須要讓直接傳json,說不愿意修改自己的東西,好吧,前端實現(xiàn)吧,于是在原文中找到引用AFN的方式,感謝原作者,再次記錄一下:
首先講下OC中發(fā)送JSON格式數(shù)據(jù)給服務(wù)器:如下圖↓

image.png
下面要說的是: swift發(fā)送json格式字符串給后臺,使用AFN,如下圖 ↓

image.png
如果請求要設(shè)置請求頭,切記一定要講請求頭設(shè)置放在manager.requestSerializer = AFJSONRequestSerializer()之后,我就因為放在之前調(diào)試了很久...
調(diào)用方法:至此調(diào)用json格式請求給服務(wù)器就成功了!!!

image.png
import UIKit
import AFNetworking
//MARK: - post請求 無key和value的json傳參方式
/*
methodIsPOST:是否是post請求
URLString:url鏈接
parameters:需要傳的包
headerValue:請求頭的value
*/
class HJNetworkManager: AFHTTPSessionManager {
static let shared = HJNetworkManager()
func json_request(methodIsPOST:Bool, URLString:String, parameters:[String : AnyObject]?,headerValue:String, completion:@escaping (_ json :AnyObject?, _ :Bool) -> ()){
// 成功回調(diào)
let success = { (task:URLSessionDataTask ,json:Any?)->Void in
completion(json as AnyObject?, true)
}
// 失敗回調(diào)
let failure = { (task:URLSessionDataTask?, error:Error)->() in
print("網(wǎng)絡(luò)請求錯誤:\(error)")
completion(nil, false)
}
let manager = AFHTTPSessionManager()
// json請求
manager.requestSerializer = AFJSONRequestSerializer()
// 設(shè)置請求頭
// manager.requestSerializer.setValue(headerValue, forHTTPHeaderField: "token")
manager.requestSerializer.setValue(headerValue, forHTTPHeaderField: "Authorization")
// var headerDict = [String : String]()
// let access_token = BaseUser.shareUser().getAccess_token()
// headerDict = ["Authorization":"bearer " + access_token]
if methodIsPOST == true {
manager.post(URLString, parameters: parameters, progress: nil, success: success, failure: failure)
}else{
manager.get(URLString, parameters: parameters, progress: nil, success: success, failure: failure )
}
}
}
調(diào)用的代碼如下:
func creatLiBaoDataSource(){
let url = BaseURLAPi.AutoziJLApiMAgentGiftPackAddWith()
let formDict = self.changeParamJSON()
//請求頭
let access_token = BaseUser.shareUser().getAccess_token()
let headerValue = "bearer " + access_token
HJNetworkManager.shared.json_request(methodIsPOST: true, URLString: url, parameters: formDict as? [String:AnyObject], headerValue: headerValue) { (dict:AnyObject?, isSuccess:Bool) in
if isSuccess{
LSPrint(message: "返回的全部數(shù)據(jù)為:\(dict ?? "" as AnyObject)")
}else{
}
}
}
//組件字典
func changeParamJSON() -> NSDictionary{
let paramDic = NSMutableDictionary()
paramDic.setValue("1277530606967808001", forKey: "goodsId")
paramDic.setValue("1277533881163145217", forKey: "goodsCatalogId")
paramDic.setValue("3", forKey: "goodsNum")
paramDic.setValue("測試", forKey: "giftPackName")
return paramDic
}
本章出自:http://www.itdecent.cn/p/b42418fa0f92
感謝原作者!
轉(zhuǎn)載請注明出處,謝謝配合!