AFNetworking作为一个网络交互的三方库,它的功能非常丰富,除了我们常用的数据请求外,我们在网络上传的时候也需要注意一下,因为上传的时候如果不是字符串,那么其他的所有东西都需要转化成NSData数据进行上传,下面介绍一下代码。
和取数据差不多的
首先定义一个字典,用来存放参数
NSDictionary* params = [NSDictionary dictionary];
params[@"属性"] = 值;
上传字段数据:
**
//创建请求管理类
AFHTTPRequestOperationManager* mgr = [AFHTTPRequestOperationManager manager];
//发送请求
[mgr POST:url parameters:params
success:^(AFHTTPRequestOperation *operation, id responseObject) {
//成功回调
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
//失败回调
}];**
上传文件数据(事先将文件转化为二进制data):
//创建请求管理类
AFHTTPRequestOperationManager* mgr = [AFHTTPRequestOperationManager manager];
//发送请求
[mgr POST:url parameters:params constructingBodyWithBlock:^(id<AFMultipartFormData> totalformData) {
[totalformData appendPartWithFileData:formData.data name:formData.name fileName:formData.fileName mimeType:formData.mimeType];
} success:^(AFHTTPRequestOperation *operation, id responseObject) {
//成功回调
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
//失败回调
} ];
我们除了要主要上传之外,有些时候还要在请求中的header加入参数,这时候也可以用AFNetworking进行实现。
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
1.首先是创建manager.requestSerializer = [AFJSONRquestSerializer serializer];
2.设置参数
value key
[manager.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
设置长度
| [manager.requestSerializer setValue:[NSString stringWithFormat:@"%ld", (unsigned long)[jsonStr length]] forHTTPHeaderField:@"Content-Length"]; |
设置请求编码类型
[manager.requestSerializer setValue:@"gzip" forHTTPHeaderField:@"Content-Encoding"];
本文有因为问题请联系
QQ:563699115
Telephone:18341266547