iPhone REST客户端

22

有没有人知道iPhone SDK中是否有调用REST web服务的好库?我想要像Heroku rest client这样简单的东西。


感谢大家的帮助。

我的服务器端使用的是Rails,所以ObjectiveResource似乎最符合我的需求。

9个回答

28

我建议使用All-Seeing Interactive的优秀ASIHTTPRequest源代码:http://allseeing-i.com/ASIHTTPRequest。如今已有多个发布的iPhone应用程序都在使用它,所以你可以确信该代码相当可靠。

这是CFNetwork API的封装,使得与Web服务器通信的一些繁琐方面更加容易。它是用Objective-C编写的,并且适用于Mac OS X和iPhone应用程序。

它适用于执行基本的HTTP请求并与REST服务进行交互(GET / POST / PUT / DELETE)。ASIFormDataRequest子类使得使用multipart/form-data提交POST数据和文件变得容易。


除了这个回答有很高的赞同率之外,可以看一下ASI发布的应用程序墙,它们使用了他们的框架:http://allseeing-i.com/ASIHTTPRequest/Who-is-using-it我今天刚开始使用它,文档很好,功能也很多,开箱即用,编码量很小。/插头 - jinglesthula
@Blake - 顺便说一句,我知道仅仅因为某个东西很流行并不意味着它总是最好的解决方案。我得去看看restkit。 - jinglesthula

5

看一下RestKit:http://restkit.org/。它提供了一个优秀的API来访问RESTful web服务,并将远程资源表示为本地对象,包括将它们持久化到Core Data中。它是完全异步的,并具有许多其他出色的功能。


这是我本周在有这个需求时尝试的方法,但就它的价值而言,对我来说并不是一个好的解决方案。它非常“笨重”且难以启动 - 我已经花了大约四个小时的时间,但它仍无法编译(使用最新的XCode on 10.7.2)。显然有些人已经让它正常工作了,也许一旦你克服了最初的障碍,它就很好用,但对我来说不值得 - 我想要的是一些源文件,可以将其放入我的项目中并完成它。 - Joe Strout

5

4
如果您的REST服务是用Ruby on Rails实现的,那么开源项目ObjectiveResource非常有前途。在我相对复杂的一个项目中,它一直表现得非常出色,我甚至向他们贡献了一些代码。 ObjectiveResource

2
ObjectiveResource的问题在于缺乏异步连接支持,这基本上意味着每次调用REST服务时都会冻结您的UI线程。在我看来,这是不可接受的。我建议远离它。 - Adrian Kosmaczewski
1
请注意,ObjectiveResource 1.1分支由ConnectionManager类提供轻量级异步连接支持:http://github.com/yfactorial/objectiveresource/blob/1.1/Classes/lib/ConnectionManager.m - Adam Alexander

2

0

[akosma / iphonerestwrappert] 试试这个来自Github的封装器

Caged / httpriot 这是一个非常简单的iPhone和Cocoa项目的HTTP Rest库。


0

在iOS 4之前,我们使用了超级冗长和痛苦的委托,但现在我们转而使用块来处理异步行为。这真的很棒,使我们的代码最近变得更易读。

我们在这里开源了我们使用的其余客户端:

https://github.com/jeremylightsmith/RestClient

请告诉我们它对您有何作用。


0

-1

使用基于REST的服务真的不需要一个“好的库”。

在SDK中包含的NSURLConnection和NSURLRequest就足够了。


1
您可以使用框架中的基本库来实现您想要的功能,但这并不意味着简单、高级的API就应该被忽视。 - Luke Redpath
八月,我完全不同意。在NSURL相关内容和REST抽象之间,你需要编写大量的代码。(NSURLConnection甚至不会在从线路上接收到字节时将其累积到缓冲区中;因此每次使用它都需要编写样板代码,这只是开始。) - jasoncrawford
2
使用好的高级库的真正好处之一是将所有仪式感强烈的样板代码从主应用逻辑中剔除。NSURL和NSURLConnection可能会很繁琐,一旦你开始考虑生产环境,就需要将解析等任务从主线程中移出以提高性能。优秀的框架简化了这些常见任务。 - Blake Watters

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接