最近使用AFNetworking做POST请求的时候,怎么设置编码格式后台收到的数据都是乱码,所以最后使用NSURLSsion类自己写了上传类。代码如下:
//handler为回掉block,这里是声明
+ (id)JQPOST:(NSString *)path parameters:(NSString *)parameters handler:(void(^)(id response, NSError *error))handler;
//这里是实现
+ (id)JQPOST:(NSString *)path parameters:(NSString *)parameters handler:(void (^)(id, NSError *))handler{
// 1.创建一个网络路径
NSURL *url = path.jq_URL;//jq_URL是我写的分类,这里用string转url的方法就可以了
// 2.创建一个网络请求,分别设置请求方法、请求参数
NSMutableURLRequest *request =[NSMutableURLRequest requestWithURL:url];
request.HTTPMethod = @"POST";
//这行代码是关键,必须设置编码格式,一般默认是UTF-8,如果有问题就跟后台确定一下格式
request.HTTPBody = [parameters dataUsingEncoding:NSUTF8StringEncoding];
// 3.获得会话对象
NSURLSession *session = [NSURLSession sharedSession];
// 4.根据会话对象,创建一个Task任务
NSURLSessionDataTask *sessionDataTask = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
NSLog(@"从服务器获取到数据");
/*
对从服务器获取到的数据data进行相应的处理.
*/
!handler ?: handler(data,error);//这里我是将data做了回掉,因为很多地方都会用到这个方法,但是模型类不一样,为了方便JSON解析
}];
//5.最后一步,执行任务,(resume也是继续执行)。
[sessionDataTask resume];
return sessionDataTask;
}
网友评论