我有一个foo:
在后台线程上调用的方法。此方法只是向服务器发送一个请求,并在检索到数据后,对这些数据执行一些计算并返回。在这种情况下,我更喜欢使用sendSynchronousRequest
: 因为这种方法很方便,而且线程被阻塞也没关系。但是,响应包含将重定向到另一个页面的“位置”标头字段。我想在重定向之前阅读响应以获取那些“Set-Cookie”标头字段。似乎同步方法不允许我这样做。
我尝试使用异步方法并实现 a NSURLConnectionDataDelegate
,但是在调用委托的这些方法之前线程已完成。(我想Apple实现异步的方式是在新线程上执行那些耗时的工作)
有没有办法解决这个问题?由于在主线程上执行异步请求可能会增加我的程序的复杂性。
foo: 方法有点像这样
- (Result *)foo
{
NSURLMutableRequest * request = blablabla;
//Do something to initialize the request
NSData *data = [NSURLConnection sendSynchronousRequest:request
returningResponse:&response
error:&error];
//Do something with the data
Result *result = [[Result alloc] init] autorelease];
//fill the result
return result;
}