首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何创建NSURLConnection的同步版本

如何创建NSURLConnection的同步版本
EN

Stack Overflow用户
提问于 2012-03-26 07:00:56
回答 2查看 289关注 0票数 0

我在NSIncrementalStore中使用NSURLConnection来同步我的NSManagedObject和Rails内置的基于rest的web服务。我知道+sendSynchronousRequest:returningResponse:error,但我的理解是,它不允许我访问HTTP响应状态码之类的东西,我需要它来正确处理响应,我的理解是,如果sendSynchronousRequest在200范围内响应,它将返回数据,如果它没有,也没有给你更多,它就会失败。

我假设我必须在NSURLConnection被实例化之后阻塞当前的方法调用,并在NSURLConnection的委托设置了被阻塞的方法可以返回的值之后取消阻塞它。

我假设这将涉及到NSLock和NSThread的某种组合,但我不知道从哪里开始。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-26 07:14:28

如果将从returningResponse:参数获得的响应对象转换为NSHTTPURLResponse,则可以访问状态代码和其他特定于HTTP的响应值。

代码语言:javascript
复制
NSURLResponse* response = nil;
NSError* error = nil;
NSData* data = [NSURLConnection sendSynchronousRequest:request
                                     returningResponse:&response
                                                 error:&error];
NSHTTPURLResponse* httpResponse = (NSHTTPURLResponse*)response;
if ([httpResponse statusCode] == 200) {
    // ...
}
票数 4
EN

Stack Overflow用户

发布于 2012-03-26 07:23:55

代码语言:javascript
复制
NSError* err;
NSHTTPURLResponse* response;
NSData* data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&err];

您的HTTP响应是由间接返回的,所以您确实有权访问它。只需传入一个NSHTTPURLResponse,或将其强制转换为此类。

我假设在NSURLConnection >被实例化之后,我将不得不以某种方式阻塞当前的方法调用,并在

的委托设置了一些可以由被阻塞的方法>返回的值之后取消阻塞它。我假设这将涉及到NSLock和>NSThread的某种组合

我不知道你这么说是什么意思。您正在执行同步请求,不需要委托。至于线程,因为你是同步执行这些请求的,所以你可能想让它们在后台线程上,甚至更简单,使用GCD。我会调查NSOperationNSOperationQueue

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9864840

复制
相关文章

相似问题

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