首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >同步ASIHTTPRequest

同步ASIHTTPRequest
EN

Stack Overflow用户
提问于 2010-01-20 08:59:53
回答 2查看 5.6K关注 0票数 4

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

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

有什么想法吗?

谢谢

--史蒂夫

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-01-20 09:24:26

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

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

从ASIHTTPRequest documentation1

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

1

票数 2
EN

Stack Overflow用户

发布于 2010-10-25 16:54:51

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

代码语言:javascript
复制
[request setShouldAttemptPersistentConnection:NO];
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2098364

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档