同步ASIHTTPRequest

时间:2010-01-20 00:59:53

标签: iphone asihttprequest

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

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

有什么想法吗?

由于

- 史蒂夫

2 个答案:

答案 0 :(得分:6)

史蒂夫 - 您所描述的是如果请求试图保持持久连接将会发生的常见问题。试试这个:

[request setShouldAttemptPersistentConnection:NO];

答案 1 :(得分:2)

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

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

来自ASIHTTPRequest文档[1]

  

一般来说,你应该使用   异步请求优先于   同步请求。当你使用   ASIHTTPRequest同步来自   主线程,您的应用程序的用户   界面将锁定并成为   无法使用的持续时间   请求。仅同步请求   真的适合没有的软件   UI(就像从脚本运行的脚本)   终端),或者如果你正在运行   从单独的线程请求   你维持(也许来自你的内心)   例如,拥有NSOperation。

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