由于AFNetworking 2.0在AFHTTPClient已经消失的青睐两位经理的:AFHTTPRequestOperationManager和AFHTTPSessionManager.迁移指南几乎没有说明每种情况下最好使用的情况.据我所知,与RESTful的基本交互JSON API可以分别使用它们中的每一个来实现.
什么是最合适的情况使用RequestOperationManager或SessionManager?
objective-c afhttpclient afhttprequestoperation afnetworking-2
我有一个方法,用于授权用户.我需要基本授权.
NSString *url = [NSString stringWithFormat:@"%@/rest/api/person/auth", host];
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager setRequestSerializer:[AFHTTPRequestSerializer serializer]];
[manager.requestSerializer setAuthorizationHeaderFieldWithUsername:_loginField.text password:_passwordField.text];
[manager setResponseSerializer:[AFJSONResponseSerializer serializer]];
[manager GET:url parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
[self parseResponseForUser:responseObject];
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error %@ ",error);
}];
Run Code Online (Sandbox Code Playgroud)
这里的主要问题是确定错误类型.我可能有授权错误和网络连接问题错误(主机无法访问).当登录名和密码与条件不匹配时,将运行故障块.例如,如果我输错了密码并登录,我会收到以下错误消息:
错误域= NSCocoaErrorDomain代码= 3840"操作无法完成.(Cocoa错误3840.)"(JSON文本不是以数组或对象开头,而是选项允许未设置片段.)
我该如何捕获错误类型?
所以我知道在旧的AFNetworking中使用AFHTTPClient是可能的,我知道如果我使用AFHTTPRequestOperationManager我可以设置队列的限制,但我不能让AFHTTPSessionManager一次只运行x个请求而不是我自己实现它使用成功块(我不想).
以下代码不限制我的连接:
AFHTTPSessionManager*manager = [AFHTTPSessionManager manager]; manager.operationQueue.maxConcurrentOperationCount = 1;
根据这里有趣的讨论,我向服务器提出了很多请求,并且在我获得超时之前将其阻塞,因此我确实需要限制并发连接.
我错过了什么?
network-programming ios afnetworking afnetworking-2 nsurlsession
我正在使用AFHTTPRequestOperationManager将一些JSON发布到我的服务器,我的代码如下.
NSDictionary *parameters = [[NSDictionary alloc] initWithObjectsAndKeys:@"john", @"name", @"xxxxx@gmail.com", @"email", @"xxxx", @"password", @"1", @"type", nil];
// Do any additional setup after loading the view.
AFSecurityPolicy *policy = [[AFSecurityPolicy alloc] init];
[policy setAllowInvalidCertificates:YES];
AFHTTPRequestOperationManager *operationManager = [AFHTTPRequestOperationManager manager];
[operationManager setSecurityPolicy:policy];
[operationManager POST:@"posturl here" parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"JSON: %@", [responseObject description]);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error: %@", [error description]);
}];
Run Code Online (Sandbox Code Playgroud)
响应如下:
2013-11-18 16:49:29.780 SwapOnceApiTester[12651:60b] Error: Error Domain=AFNetworkingErrorDomain Code=-1011 "Request failed: unsupported media type (415), got 1664256" UserInfo=0x1565a6c0 …Run Code Online (Sandbox Code Playgroud) 我正在使用AFNetworking下载我的应用程序用于同步解决方案的文件.在某些时候,应用程序会将一系列文件作为批处理单元下载.按照这个例子,我像这样运行批处理:
NSURL *baseURL = <NSURL with the base of my server>;
AFHTTPRequestOperationManager *manager = [[AFHTTPRequestOperationManager alloc] initWithBaseURL:baseURL];
// as per: https://stackoverflow.com/a/19883392/353137
dispatch_group_t group = dispatch_group_create();
for (NSDictionary *changeSet in changeSets) {
dispatch_group_enter(group);
AFHTTPRequestOperation *operation =
[manager
POST:@"download"
parameters: <my download parameters>
success:^(AFHTTPRequestOperation *operation, id responseObject) {
// handle download success...
// ...
dispatch_group_leave(group);
}
failure:^(AFHTTPRequestOperation *operation, NSError *error) {
// handle failure...
// ...
dispatch_group_leave(group);
}];
[operation start];
}
// Here we wait for all the requests to …Run Code Online (Sandbox Code Playgroud) 我正在使用新版本的AFNetworking,我无法弄清楚如何阅读响应的标题.我正在使用AFHTTPSessionManager来执行我的查询,一切正常但我无法找到标题响应字段.
这是我如何进行
self.sessionManager = [[AFHTTPSessionManager alloc] initWithBaseURL:[NSURL URLWithString:BASE_URL]];
[self.sessionManager GET:urlId parameters:nil
success:^(NSURLSessionDataTask *task, id responseObject) {
if ([self.delegate respondsToSelector:@selector(userIsLoadedWithInfos:)]) {
[self.delegate userIsLoadedWithInfos: responseObject];
}
} failure:^(NSURLSessionDataTask *task, NSError *error) {
if ([self.delegate respondsToSelector:@selector(userLoadingFailed)]) {
[self.delegate userLoadingFailed];
}
}
];
Run Code Online (Sandbox Code Playgroud)
我尝试读取任务的响应属性,但它返回一个不包含标题的NSURLResponse.现在有人如何阅读2.0版本的响应标头?谢谢
我正在从一个非常慢的服务器上下载JSON数据.从服务器获得一个resoonse大约需要一分钟.我使用AFNetworking库,我的代码抛出"请求超时"错误:
NSString *urlString = [NSString stringWithFormat:@"%@/account.do?JSON&sysparm_action=getRecords",baseUrlString];
NSString *login = [[NSUserDefaults standardUserDefaults] objectForKey:@"login"];
NSString *password = [[NSUserDefaults standardUserDefaults] objectForKey:@"password"];
[manager setRequestSerializer:[AFHTTPRequestSerializer serializer]];
[manager.requestSerializer setAuthorizationHeaderFieldWithUsername:login password:password];
[manager GET:urlString parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"JSON: %@", responseObject);
[self parseJsonWithAccountsData:responseObject];
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error: %@", operation.responseString);
[self performSelectorOnMainThread:@selector(failedWithContactsDownload) withObject:nil waitUntilDone:YES];
}];
Run Code Online (Sandbox Code Playgroud)
没有找到设置超时的方法AFHTTPRequestOperationManager.我该怎么做?
我有一个新闻应用程序,它以XML格式在线获取新闻,在本地存储在sqlite dbase中...这是restkit的完美案例.
但是,我想有时手动获取xml数据(即不想将其存储在dbase中).换句话说,我想直接用AFNetworking请求它.我喜欢在AFNetworking 2.0中自动解析xml,所以我想使用该功能.
但是,Restkit 2.0链接到AFNetworking 1.3 ..所以如果我将它添加到我的podfile:
pod 'RestKit', '~> 0.21.0'
pod "AFNetworking", "~> 2.0"
Run Code Online (Sandbox Code Playgroud)
并运行pod install我得到以下错误:
[!] Unable to satisfy the following requirements:
- `AFNetworking (~> 1.3.0)` required by `RestKit/Network (0.21.0)`- `AFNetworking (~> 2.0)` required by `Podfile`
Run Code Online (Sandbox Code Playgroud)
有没有办法解决?
我试着用做的iOS应用AFNetworking在UITableView.TableView加载20个数据,如Twitter的时间轴.
当它加载超过80个数据时,Xcode显示花费大约70MB内存和控制台节目
"Received memory warning."
Run Code Online (Sandbox Code Playgroud)
和
**"error in __connection_block_invoke_2: Connection interrupted".**
Run Code Online (Sandbox Code Playgroud)
这是什么以及如何处理此错误?
AFNetworking 2.0上周宣布.但我发现AFNetworking 2.0有不同的要求.
README.md告诉它需要iOS 7.0及更高版本,而AFNetworking 2.0迁移指南告诉它需要iOS 6.0及更高版本.
剂量AFNetworking 2.0支持iOS 6.0?
afnetworking-2 ×10
ios ×7
afnetworking ×5
objective-c ×4
cocoa-touch ×2
ios7 ×2
afhttpclient ×1
block ×1
nsurlsession ×1
restkit ×1
uitableview ×1
xml ×1