我正在寻找一个关于使用NSURLConnection异步请求的很好的教程。我一直在四处寻找和谷歌,但无法找到一个。这可以是这里数以万计的问题的重复。但是请直接给我正确的教程,我之前使用过ASIHTTPRequest,但我之前没有使用Apple提供的库。异步NSURLConnection计划教程
回答
我会为你提供一个写我自己,但我会强烈建议使用AFNetworking,它的NSURLConnection的/的NSURLRequest系统,该系统有一个更清洁的流量以上的包装,你也可以使用基本NSURLRequests /连接与此,随着常规NSOperationQueues。图书馆也使用可可豆荚,说实话,你真的不能得到更清洁的。
NSOperationQueue *mainQueue = [[NSOperationQueue alloc] init];
[mainQueue setMaxConcurrentOperationCount:5];
NSURL *url = [NSURL URLWithString:@"http://192.168.0.63:7070/api/Misc/GetFuelTypes"];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url];
[request setHTTPMethod:@"GET"];
[request setAllHTTPHeaderFields:@{@"Accepts-Encoding": @"gzip", @"Accept": @"application/json"}];
[NSURLConnection sendAsynchronousRequest:request queue:mainQueue completionHandler:^(NSURLResponse *response, NSData *responseData, NSError *error) {
NSHTTPURLResponse *urlResponse = (NSHTTPURLResponse *)response;
if (!error) {
NSLog(@"Status Code: %li %@", (long)urlResponse.statusCode, [NSHTTPURLResponse localizedStringForStatusCode:urlResponse.statusCode]);
NSLog(@"Response Body: %@", [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding]);
}
else {
NSLog(@"An error occured, Status Code: %i", urlResponse.statusCode);
NSLog(@"Description: %@", [error localizedDescription]);
NSLog(@"Response Body: %@", [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding]);
}
}];
mainQueue对象用于路由请求和管理可以一次发送多少个请求。这可以用很多方式,我倾向于使用它们进行分类的请求(认证,主要,上传队列)
一旦在块内部,您使用返回的响应构建本地NSHTTPURLResponse。如果你想返回状态码,这是必需的。 (不存在于标准NSURLResponse对象中)
responseData是通常可以正确转换为字符串或通过解串器运行以获取人类可读数据的数据。
很简单的解释,代表们给你带来麻烦,如果你不知道如何:-)
管理来自同一个对象(也许就是为什么我喜欢的块)的多个请求就像要触发始终代表或块您的UI在您收到响应后进行更新,但不会阻止等待请求完成,如果您正在将数据加载到表中,则会在加载时调用请求并提供某种形式的进度,并告诉他们请求正在一旦收到数据,你就可以删除hud并重新载入表格数据。必须在主线程上调用HUD,因此您一定需要处理该问题,我通常只是构建扩展并使用performSelectorOnMainThread,但是更好的方法可能是将函数包装在dispatch_async中,并调用您在hud之外显示/隐藏代码那。
感谢Holyprin,我知道AFNetworking和ASIHTTPRequest但是我不允许使用第三方库,这就是我试图从头开始的原因。所以,如果你为我提供你的教程,那将会很棒。 – user2070420 2013-02-15 20:22:15
猜测是有道理的,我会在这里写一次。 – Holyprin 2013-02-15 20:35:13
我如何通知我的用户界面,任务已完成说我正在下载一些图像,以自行更新。 – user2070420 2013-02-20 07:13:19
- 1. nsurlconnection异步请求
- 2. 异步NSURLConnection调用
- 3. 与NSOperation异步NSURLConnection
- 4. NSOperation与异步NSURLConnection
- 5. 异步NSURLConnection性能问题
- 6. 异步NSURLConnection的抛出EXC_BAD_ACCESS
- 7. 提前终止异步NSURLConnection
- 8. iphone取消异步NSURLConnection
- 9. 如何取消异步NSURLConnection
- 10. 异步NSURLConnection和NSOperation - 取消
- 11. ByDefault NSURLConnection是同步还是异步
- 12. 异步重复计划任务
- 13. 来自线程与异步请求的NSURLConnection同步请求
- 14. MBProgressHUD] NSURLConnection的以异步方式
- 15. 异步NSURLConnection如何内部处理
- 16. 通过NSURLConnection异步加载TableView图像
- 17. 如何在NSOperation内执行异步NSURLConnection?
- 18. 从异步NSURLConnection返回NSDictionary /类
- 19. 如何在NSOperation内启动异步NSURLConnection?
- 20. 异步NSURLConnection和保持活着
- 21. iphone nsurlconnection异步,等待完成
- 22. 管理多个异步NSURLConnection的连接
- 23. 在异步NSURLConnection中使用MBProgressHUD?
- 24. 没有数据异步使用NSURLConnection
- 25. 使用NSInvocation的NSOperation内的异步NSURLConnection?
- 26. iOS版 - 异步NSURLConnection的内部的NSOperation
- 27. 异步NSUrlConnection究竟意味着什么?
- 28. 如何等待异步NSURLConnection响应
- 29. 异步NSUrlConnection不在主循环
- 30. 如何在异步NSURLConnection中处理NSZombies?
是否有您不明白的特定部分?在核心,它只有几个方法... – jrturton 2013-02-15 20:34:22
是的我想了解这个方法sendAsynchronousRequest:queue:completionHandler:所以我应该如何通知该请求已处理。这个completionHandler到底做了什么?这是正确处理异步请求的正确方法吗?或者是否有其他方法 – user2070420 2013-02-15 20:44:52
是的,这样或委托方法,要么是好的。你熟悉块吗? – jrturton 2013-02-15 20:50:48