使用asihttprequest根据http状态码获取数据

我试图每次更改某些内容时将我的iOS应用程序连接到来自Web服务的GET数据。 我目前的实现是使用NSTimer并执行ASIHttpRequest,但我不喜欢该轮询实现。 有没有更好的方法来做到这一点?

我正在考虑启动请求,并让它继续尝试,直到Web服务状态代码变为OK(状态200)或可能是“已修改”的状态代码。 我如何在视图控制器中执行此操作?

这是我到目前为止:

self.asiRequest = [ASIHTTPRequest requestWithURL:[NSURL URLWithString:self.barcodeUrl]];
[self.asiRequest setDelegate:self];
[self.asiRequest startAsynchronous];
[self.asiRequest addRequestHeader:@"Accept" value:@"application/json"];
[self.asiRequest addRequestHeader:@"Content-Type" value:@"application/json"];
int statusCode = [self.asiRequest responseStatusCode];

我知道如果请求成功,委托方法- (void)requestFinished:(ASIHTTPRequest *)request

我想我的问题是,我如何保持一个开放的ASIHttpRequest,当Web服务返回“修改”时,它会调用GET请求,然后再次保持打开的连接? 这必须是异步的,并且不会在UI线程上运行,因为我不想让应用程序挂起。

非常感谢!


无需在客户端做太多工作,最简单的方法就是让Web服务在返回“修改”时发送一个Location:标头,指向要用新内容GET的URL。 如果要监视的URL取决于例如用户ID或应用程序所在的区域而不同,请创建一个监视器脚本,您可以在其中传递GET参数以配置返回“修改”时应返回给您的确切URL。

然后, ASIHTTPRequest将自动GETLocation:的内容Location:并且您可以重新安排它在requestFinished:到监视器URL中,知道响应(如果不为空/“未修改”)将始终是新数据,因为重定向到新数据发生在幕后。

链接地址: http://www.djcxy.com/p/74507.html

上一篇: Using asihttprequest to fetch data based on http status code

下一篇: Will this work?