iOS网站交互(NSURLConnection)设计/模式

iOS网站交互(NSURLConnection)设计/模式,ios,web-services,web,nsurlconnection,Ios,Web Services,Web,Nsurlconnection,这是一个关于如何设计与网站交互的应用程序的问题 我有一个应用程序,通过异步NSURLConnection(我认为这是iOS中首选的方法)查询网站信息。该网站没有api/web服务接口。交互就像浏览器一样完成,发送请求、接收答案、解释答案以确定下一个操作 该网站还使用用户名和密码进行保护,并且不存在任何漏洞。因此,当我想与网站互动时(比如说,像“获取照片列表”、“下载照片”、“上传照片”这样的用例),我需要先登录,当我完成后,我就要注销 我想这样写我的函数(但我非常乐于接受建议,也许我看错了) 然

这是一个关于如何设计与网站交互的应用程序的问题

我有一个应用程序,通过异步
NSURLConnection
(我认为这是iOS中首选的方法)查询网站信息。该网站没有api/web服务接口。交互就像浏览器一样完成,发送请求、接收答案、解释答案以确定下一个操作

该网站还使用用户名和密码进行保护,并且不存在任何漏洞。因此,当我想与网站互动时(比如说,像“获取照片列表”、“下载照片”、“上传照片”这样的用例),我需要先登录,当我完成后,我就要注销

我想这样写我的函数(但我非常乐于接受建议,也许我看错了)

然后,当用户要求时,我想

login
if login successful
  download photo
logout
我遇到的问题是,每次启动
NSURLConnection
,都会在
-connectionidfinishload
中收到回复。所以我需要保持某种状态来知道下一步该做什么,这个登录是为了获取照片列表还是为了下载照片

现在,问题不是我不能让它工作,问题是如何干净有效地设置这样的东西,以便它可以扩展,从而支持20+甚至50+个用例,并且仍然易于维护。强调并非所有用例都像上面所示的那样简单


我试图实现的一个例子就是facebook应用程序。该应用程序还需要登录到facebook,以支持发布项目、下载帖子(如帖子)、上传照片等一系列用例。他们是如何设计这样的东西的?

如果问题是如何登录到您的服务器,那么实现细节将根据您的服务器如何验证“登录”而有所不同。一个模型是简单的HTTP POST。另一个模型如《URL加载系统编程指南》中所述

如果您不知道您的web服务器采用了哪种样式,那么如果您尝试使用web浏览器中的URL访问其中一个安全文件,通常可以找到它。如果您看到这样的屏幕,您的服务器将面临身份验证挑战:

如果您没有看到web浏览器生成的弹出窗口,而是看到类似HTML“请登录”消息的内容,那么您可能必须执行登录后处理。请注意,如果您的服务器正在使用这种过程,如果登录的成功或失败是通过HTML页面报告的,那么让您的应用程序解密就有点麻烦了。如果您有一个提供JSON或XML响应而不是HTML响应的登录页面版本,那么If将是理想的选择。我不知道你是否有足够的空间在你的服务器上做这件事,但如果你能这样做的话,这将大大简化你的iOS开发

如果您正在登录进行POST,请参阅,以获取有关如何对web服务器发出简单POST(和获取)请求的演示


有关如何处理身份验证挑战的示例,请参阅。

谢谢Rob,您的回答很有帮助,但。。。这不是一个如何实现特定身份验证方法的问题。我想知道如何以干净、可扩展的方式使用NSUrlConnection。我会看一下你为提示和指针提供的例子。@ DIJ,如果你正在通过源代码挖掘灵感,我也建议你考虑浏览代码或(它本身是建立在<代码> Afvutix< /代码>)上。它们利用了
NSURLConnection
功能,同时提供了一些有价值的抽象。这可能是你的拿手好戏。
login
if login successful
  download photo
logout