代码之家  ›  专栏  ›  技术社区  ›  Steve

AsihttpRequest同步

  •  4
  • Steve  · 技术社区  · 16 年前

    我有一个iPhone应用程序,它使用AsiHTTPRequest与我服务器上的一个REST服务通信。当我在模拟器上运行时,它工作得很好,但是当我接触到电话本身时,我会有奇怪的行为。

    第一次单击启动请求的按钮时,我会立即返回结果,一切都很好。从那时起,当我单击按钮启动连接时,连接大约需要2-3分钟。似乎我首先启动的AsihttpRequest(我已经收到了正确的结果)还没有完成。在开始下一个请求之前,是否需要使用某种魔力来终止原始请求?我假设,自从-start方法返回以来,我得到了来自服务器的结果,原始请求已经完成,我可以启动另一个请求。

    有什么想法吗?

    谢谢

    ——史提夫

    2 回复  |  直到 15 年前
        1
  •  2
  •   fbrunel    16 年前

    您不应该调用-start方法,它属于nsOperation。asihttpRequest接口是-startSynchronous或-startAsynchronous。

    但是,强烈建议使用异步调用,否则您的主线程(即UI)将被阻塞。

    来自asihttpRequest文档[1]

    一般来说,你应该使用 异步请求优先于 同步请求。当你使用 AsihttpRequest从 主线程,应用程序的用户 接口将锁定并变为 在 请求。只有同步请求 非常适合没有 用户界面(就像从 或者如果您正在运行 从一个单独的线程请求 你维护(也许是从你的内部 例如,自己的nsOperation)。

    〔1〕 http://allseeing-i.com/ASIHTTPRequest/How-to-use

        2
  •  6
  •   amehta    15 年前

    史蒂夫-你所描述的是一个常见的问题,如果请求试图保持持久的连接,就会发生这种问题。试试看:

    [request setShouldAttemptPersistentConnection:NO];