4

我有一个 iPhone 应用程序,它使用 ASIHTTPRequest 与我的服务器上的 REST 服务进行通信。当我在模拟器上运行时,它工作得很好,但是当我进入手机本身时,我会出现奇怪的行为。

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

有任何想法吗?

谢谢

——史蒂夫

4

2 回答 2

6

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

[request setShouldAttemptPersistentConnection:NO];
于 2010-10-25T08:54:51.383 回答
2

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

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

来自 ASIHTTPRequest 文档[1]

通常,您应该优先使用异步请求而不是同步请求。当您从主线程同步使用 ASIHTTPRequest 时,您的应用程序的用户界面将锁定并在请求期间变得不可用。同步请求仅适用于没有 UI 的软件(例如从终端运行的脚本),或者如果您从您维护的单独线程运行请求(例如,可能从您自己的 NSOperation 内部)。

[1] http://allseeing-i.com/ASIHTTPRequest/How-to-use

于 2010-01-20T01:24:25.740 回答