Alamofire的使用和网络请求的封装,解决不能打印中文的问题
来源:互联网 发布:matlab 最优化算法 书 编辑:程序博客网 时间:2024/06/05 00:59
在swift3.0中Alamofire可以说是一个相当完美的网络请求的框架,使用起来和NFNetworking一样的顺手,在这里和大家分享一下,这次只做了一个浅层次的封装一个两层的封装,本文基于swift3.0
-----第一层发送网络请求
import UIKit
import Alamofire
enum MethodType{
case GET
case POST
}
class NetworkTools: NSObject {
//封装一个类方法;
classfunc 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
guardlet result1 = response.result.valueelse{
print(response )
return
}
//处理Unicode编码。将unicode编码的json转成uft8编码
guard let data = response.data else{
return
}
let utf8Text =String(data: data , encoding: .utf8)
print(utf8Text ??"编码错误")
finishCallBack(result1 asAnyObject)
//finishCallBack(result1 as AnyObject)
// finishCallBack(utf8Text as AnyObject)
}
}
//上传图片;
class func upLoadImageRequest(urlString :String, params:[String:String], data: [Data], name: [String],success :@escaping (_ response : [String :AnyObject])->(), failture :@escaping (_ error :Error)->()){
let headers = ["content-type":"multipart/form-data"]
//__________*************________________
Alamofire.upload(
multipartFormData: { multipartFormData in
//666多张图片上传
let flag = params["mobile"]
//let userId = params["userId"]
//multipartFormData.append(flag?.data(using: String.Encoding.utf8), withName: ""),
multipartFormData.append((flag?.data(using:String.Encoding.utf8)!)!, withName:"mobile")
// multipartFormData.append( (userId?.data(using: String.Encoding.utf8)!)!, withName: "userId")
for iin 0..<data.count {
multipartFormData.append(data[i], withName:"avatar", fileName: name[i], mimeType:"image/png")
}
},
to: urlString,
method: .post,
headers: headers,
encodingCompletion: { encodingResult in
switch encodingResult {
case .success(let upload,_, _):
upload.responseJSON { responsein
iflet value = response.result.valueas? [String:AnyObject]{
success(value)
print(value)
}
print("响应请求:"+"\response.response?.statusCode")
guard let data = response.data else{
return
}
//此处处理的是中文的打印问题,虽然格式不太完美,但是可以使用KJson能够解析,如果大家有什么好办法,可以下方留言,请赐教
let utf8Text =String(data: data , encoding: .utf8)
print("照片上传返回:"+utf8Text!)
}
case .failure(let encodingError):
// PrintLog(encodingError)
failture(encodingError)
}
}
)
//换一种方法试一试;
// Alamofire.upload(data[0], to: urlString).response { response in
// debugPrint(response)
// let utf8Text = String(data: response.data! , encoding: .utf8)
// debugPrint("服务器返回---%@"+utf8Text!)
//
// }
}
}
//封装网络请求的方法
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)
}
}
------
}
}
}
- Alamofire的使用和网络请求的封装,解决不能打印中文的问题
- [绍棠_Swift] Swift3.0中的Alamofire网络请求的封装
- alamofire GET请求带中文参数遇到的问题
- iOS使用AFNetworking请求回来的网络数据,不能显示中文, 新建一个分类解决。
- Swift3.0 Alamofire 网络请求的封装--->get,post,upload图片上传
- swift 数据请求Alamofire的使用
- 解决Mybatis使用log4j不能打印sql的问题
- Swift - 使用Alamofire通过HTTPS进行网络请求,及证书的使用
- swift 的网络请求--Alamofire框架
- 网络请求的封装
- 封装的网络请求
- 网络请求的封装
- 网络请求的封装
- 解决PDF不能打印的问题
- <iOS>Alamofire的使用
- Alamofire的使用教程
- 使用NSURLConnection的网络请求与封装
- Volley网络请求的简单封装使用
- Vulkan Programming Guide 第一章(1)
- ListView怎么添加表头
- Groovy开发工具包
- 《unix/linux编程实践教程》学习笔记:第五章 连接控制:学习stty
- 活出自己的传奇
- Alamofire的使用和网络请求的封装,解决不能打印中文的问题
- .bash_profile还原重置
- Struts2的国际化文件配置样式以及中文字体设置
- [Tinkter 教程05] Radiobutton 控件
- 搭建新博客(MrYXJ.github.io)
- 删除链表中的元素
- 通用寄存器
- Ubuntu 14.04远程登录服务器--ssh的安装和配置
- node.js 桌面软件框架 electron 开发流程