ASIHTTPRequest vs AFNetworking vs NSUrlRequest
Posted
技术标签:
【中文标题】ASIHTTPRequest vs AFNetworking vs NSUrlRequest【英文标题】: 【发布时间】:2013-03-30 13:20:57 【问题描述】:过去我使用ASIHTTPRequest
,但现在有NSURLRequest
。我们现在应该使用NSURLRequest
吗?有什么缺点吗?
对于现在阅读本文的人:我最终使用了答案中提到的AFNetworking
https://github.com/AFNetworking/AFNetworking
谢谢,
【问题讨论】:
不理解投反对票... ASIHTTPNetworking 不再受支持且不应使用 (IIRC)。我倾向于使用 NSURLRequest 和 NSURLConnection 等来建立自己的网络...... 我没有在 NSURL* 中获得块,所以我使用 afnetworking 加上它的 uiimageview 类别是糖使用..ASIHTTP 在 iPod1+ios6 组合中出现问题根本不起作用 【参考方案1】:NSURLConnection
和NSURLRequest
是提供的用于管理连接的 Cocoa 类。在 iOS 7 中,Apple 添加了NSURLSession
。
但我认为您会发现AFNetworking
是一个进一步简化网络请求(尤其是复杂的HTTP 请求)的框架。如果出于任何原因不想使用第三方框架,可以直接使用NSURLConnection
和/或NSURLSession
。它只需要更多的编码。
如果您正在寻找一个好的ASIHTTPRequest
替代方案,AFNetworking
是一个很好的选择。
有关NSURLConnection
和NSURLSession
的信息,请参阅URL Loading System Programming Guide。
【讨论】:
【参考方案2】:NSURLRequest
从 iOS2.0 开始就已经存在(参见doc),所以它并不是全新的。 ASIHTTPRequest
已停产,last update 已于 2011 年 5 月 15 日发布,因此您不应使用它。 AFNetworking 是一个令人愉快的 iOS 和 Mac OS X 网络库,正如他们 self 所描述的那样,它确实让您的生活更轻松,在我的情况下,它是我包含在我的网络所需项目中的第一个框架。
你应该使用哪一个?,我认为这取决于你的要求,NSURLRequest
和NSURLConnection
你可以做任何事情,事实上 AFNetworking 我们建立在 NSURLConnection 之上。但是我之前告诉过你,AFNetworking 有我的支持。
编辑发布 iOS7
如果你的目标是 iOS7,你应该看看 NSURLSession,检查official documentation 和这个tutorial。
为 Swift 编辑
查看Alamofire 项目,了解使用 Swift 完成的实现,它也是由 mattt(AFNetworking 的主要作者)创建的。
【讨论】:
适用于 Switch 还是适用于 Swift?另外,为什么我应该选择使用 Alamofire 而不是现有的库?我真的关心它是用 Swift 编写的吗?! @AlexSmith 感谢您的更正,已修复;-)。抱歉耽搁了,但我完全离线【参考方案3】:asihttprequest 是过时的库,现在不支持开发。不要使用它。
NSURLRequest 是默认使用的 iOS (cocoa) 类。我建议很少使用它,因为您需要编写大量代码来处理连接响应。 最重要的是构建所有 http 库。
AFNetwoking 现在是 http 的标准,恕我直言。它使用块进行回调,它支持不同类型的数据 json、xml 等。它设计得很好,可以很容易地被子类化。这是最好的。
【讨论】:
【参考方案4】:Native (NSURLSession) vs AFNetworking 或任何其他库。
我建议您使用 NSURLSession,因为它为您在应用端提供了很多自定义功能。最近我在做一个项目,我必须在应用程序的某些地方使用多部分表单数据。我必须向后端人员提供我的请求正文,我确实使用 AfNetworking 记录器来打印我的正文,但这对我没有帮助。所以我确实搬到了可可原生库并得到了我的解决方案。
所以我建议您使用 iOS 原生网络,因为它为您提供了很多自定义功能,但如果您需要更少的代码,那么您可以使用任何 3rd 方库。
【讨论】:
以上是关于ASIHTTPRequest vs AFNetworking vs NSUrlRequest的主要内容,如果未能解决你的问题,请参考以下文章