iPhone:从完成的请求中获取响应[ASIHttpRequest]

时间:2009-11-05 05:04:07

标签: iphone objective-c oop delegates asihttprequest

我试图在iPhone上使用ASIHttpRequest从我的网站上的基于查询字符串的API获取一些信息。

目前,我正处于设计的计划阶段,我对如何继续工作感到困惑。

我想有一个类,它将处理我需要的所有请求。我打算让iPhone应用程序的不同部分调用这个类,在类中,我想运行ASIHttpRequest代码。例如:

  1. 我会弹出一个会登录的模态视图。
  2. 这个模态视图会调用一个带有user / pass的函数到API类,然后将它放在一起并调用它。
  3. 一旦处理完URL请求,它就会进入requestFinished方法或我选择的任何一个选择器。
  4. 模态视图将返回responseString并按需执行。
  5. 这是我被困的地方。我想以某种方式将responseString传递回网络URL请求的原始调用者。

    我应该使用委托方法吗?如果是这样,我如何从requestFinished方法中调用它?我想到了这一点,但我对如何将requestFinished函数调用该委托感到困惑。我可能错过了将该委托作为对象与ASIHttpRequest一起传递的简单方法。

    我也考虑过NSNotificationCenter,但我觉得这比使用委托更有意义。

    我感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

这取决于你想对回应做什么。如果您只想显示带有响应的警报消息,可以直接在请求delagate方法中执行此操作。另一种方法是将您的响应存储在具有共享数据的类中,并发布通知以告知侦听器它有要处理的数据。这并不困难)和第三种变体。您可以使用委托和选择器属性为客户端 - 服务器通信创建基本类。然后,如果需要,只需调用[delegate performSelector:selector]。然后,您可以继承其他类以进行登录,检查版本等。

答案 1 :(得分:0)

你可以子类化ASIHttpRequest并覆盖它的- (void)requestFinished,它允许你在后台线程上做一些处理(并且仍然调用[super requestFinished];)或者只是添加一个实例变量id myDelegate;访问者,以便您可以从-requestFinished

访问它