标签:
本文介绍的是AFNetworking-2.0 使用方法(增加适应:不完善的head內的 meta的content格式)
随着asihttprequest的停止更新,许多人都转向了AFNetworking、 MKNetworkKit.我也是其中一个。于是我从网上找了许多文章作参考,但是结果都是失败告终。研究了好久都搞不透,最后还是请人帮忙搞定了。经常从网上索取免费资料的一员,要有回报的思想,也为了让更多的人少走些弯路,所以下面是代码:(有错误可以指出)
首先:将AFNetworking、UIKit+AFNetworking 加入到工程
一般要引用这两个包,不然会有错误提示:SystemConfiguration.framework、 MobileCoreServices.framework
然后在要使用的地方
#import "AFHTTPRequestOperationManager.h"
#import "AFHTTPSessionManager.h"
AFHTTPRequestOperationManager的post有两个方法,一个是普通的post,另一个是可以上传图片的
1.上传图片:
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManagermanager];
manager.responseSerializer.acceptableContentTypes = [NSSetsetWithObject:@"text/html"];
NSDictionary *parameters =@{@"参数1":@"value1",@"参数2":@"value2"、、、};
[managerPOST:@"替换成你要访问的地址"parameters:parameters
success:^(AFHTTPRequestOperation *operation,id responseObject) {
NSLog(@"Success: %@", responseObject);
}failure:^(AFHTTPRequestOperation *operation,NSError *error) {
NSLog(@"Error: %@", error);
}];
tom19830924 | 2013-12-27 17:44 |
這是我第二次回答這問題了 這不是AFNetworking的問題 這是做Server那邊的人沒把head內的 meta的content格式指定好 請參考 http://stackoverflow.com/questions/477816/what-is-the-correct-json-content-type |
evangel | 2014-03-18 21:41 |
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; manager.requestSerializer = [AFJSONRequestSerializer serializer]; manager.responseSerializer = [AFJSONResponseSerializer serializer]; [manager.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Accept"]; [manager.requestSerializer setValue:@"application/json; charset=utf-8" forHTTPHeaderField:@"Content-Type"]; |
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManagermanager];
manager.responseSerializer.acceptableContentTypes = [NSSetsetWithObject:@"text/html"];
manager.requestSerializer = [AFJSONRequestSerializerserializer];
manager.responseSerializer = [AFJSONResponseSerializerserializer];
[manager.requestSerializersetValue:@"application/json"forHTTPHeaderField:@"Accept"];
[manager.requestSerializersetValue:@"application/json; charset=utf-8"forHTTPHeaderField:@"Content-Type"];
AFNetworking中最常用的就是POST和GET请求,但是可能很多人都不知道,这个强大的框架还可以配置HTTPHeader
首先看一下我们常用的方法
1
2
3
4
5
6
7
|
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; manager.responseSerializer = [AFJSONResponseSerializer new ]; [manager POST:url parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) { } failure:^(AFHTTPRequestOperation *operation, NSError *error) { }]; |
这个常规的用法我们只需要给manager的responseSerializer new一个对象即可使用,但是如果需要给请求配置特定的Header的话,可以看下面的代码
首先,给请求的serializer new一个对象,这一步千万不能忘,不然后面的配置都无效!!!
1
|
manager.requestSerializer = [AFJSONRequestSerializer new ]; |
设置请求内容的类型
1
|
[manager.requestSerializer setValue: @"application/json;charset=utf-8" forHTTPHeaderField: @"Content-Type" ]; |
设置请求内容的长度
1
|
[manager.requestSerializer setValue:[ NSString stringWithFormat: @"%ld" , (unsigned long )[jsonStr length]] forHTTPHeaderField: @"Content-Length" ]; |
设置请求的编码类型
1
|
[manager.requestSerializer setValue: @"gzip" forHTTPHeaderField: @"Content-Encoding" ]; |
标签:
原文地址:http://www.cnblogs.com/feijietongti/p/5157551.html