最近在用swift写项目时,确实遇到很多的问题,但是经过努力还是解决,我经常数据请求回json是Unicode编码的,同时我们需要对网络请求进行一个封装,我的这份笔记探讨一下封装和unicode转成UTF8,直接上代码
先定义一个网络请求的工具类,在这里发送网络请求
import UIKit
import Alamofire
enum MethodType{
case GET
case POST
}
class NetworkTools: NSObject {
//封装一个类方法;
class func requetDate(_ type:MethodType,URLString:String,paramters:[String:AnyObject
]?=nil,finishCallBack:@escaping (_ result: AnyObject)->()){
//获取类型:
let method1 = type == .GET ?HTTPMethod.get : HTTPMethod.post
Alamofire.request(URLString, method: method1, parameters:paramters).responseJSON { (response) in
//处理Unicode编码。将unicode编码的json转成uft8编码
guard let data = response.data else{
return
}
let utf8Text = String(data: data , encoding: .utf8)
//finishCallBack(result1 as AnyObject)
finishCallBack(utf8Text as AnyObject)
}
}
}
我们在另一个工具类中调用NetworkTools
import UIKit
class NetworkToolRequest: NSObject {
class func getIdentifierCode(params:[String:AnyObject],_ finishCallBack: @escaping(_ result: AnyObject)->()){
NetworkTools.requetDate(.POST, URLString: "http://120.77.69.123:8080/ubEApi/eApi/sendSMSCaptcha.do") { (response) in
finishCallBack(response)
}
}
//注册---接口3.2
class func registUser(params:[String:AnyObject],_ finishCallBack: @escaping(_ result: AnyObject)->()){
NetworkTools.requetDate(.POST, URLString: "http://120.77.69.123:8080 /ubEApi/eApi/register.do", paramters: params) { (response) in
finishCallBack(response)
}
}
//登录---接口3.3
class func LoginAccount(params:[String:AnyObject],_ finishCallBack: @escaping(_ result: AnyObject)->()){
NetworkTools.requetDate(.POST, URLString: "http://120.77.69.123:8080/ubEApi/eApi/login.do", paramters: params) { (response) in
finishCallBack(response)
}
}
//获取用户的基本信息;
}