RestKit 0.20.0pre5:每个请求的HTTP头部信息

4
我想在由[RKObjectManager getObjectsAtPath:...]发出的GET请求中发送一个If-Modified-Since HTTP头。

迁移指南告诉我可以为RKObjectManager实例设置“全局”默认请求头:

RKObjectManager* objectManager = [RKObjectManager managerWithBaseURLString:url];
[objectManager.HTTPClient setDefaultHeader:@"If-Modified-Since" value:@"Sat, 29 Dec 2012 19:43:31 GMT"];

因为我想保持一个集中的RKObjetManager实例(通过[RKObjectManager sharedManaged]),所以这并不是一个很好的选择。

在每个请求之前创建一个特定的RKObjectManager并将我的HTTP头设置为“默认”是唯一的解决方案吗?还是有更好的方法?


为什么你不能像这样将你的objectManager设置为共享实例:[RKObjectManager setSharedManager:objectManager] - eddy
1个回答

15
这里有几个选项:
  1. 使用 requestWithObject:method:path:parameters: 获取一个 NSURLRequest 对象,适当地配置 NSURLRequest,然后调用 objectRequestOperationWithRequest:success:failure:managedObjectRequestOperationWithRequest:managedObjectContext:success:failure:。这将允许您一次性地配置请求。
  2. 通过在 RKObjectManager 上使用 setHTTPOperationClass: 配置 RKHTTPRequestOperation 的自定义子类。这将允许您挂钩子类来配置每个 NSURLRequest,因为对象管理器发出请求,从而让您集中配置。
  3. 在最新的开发分支上,您还可以向管理器注册 RKObjectRequestOperation 的子类,该子类将用于您选择的请求,使您能够在对象请求操作级别上集中定制。
选项 1 或 2 可能最适合您所述的 HTTP 级别问题,但我提到另一种在对象映射级别进行相同类型的自定义的替代方法。

谢谢你的建议,Blake!等我后天回到项目上时会试一下。我会告诉你它的效果如何 :-) - manu
所以根据这里的评论 https://github.com/AFNetworking/AFNetworking/pull/928 - RestKit甚至需要费心定制If-Modified-Since吗? - johndpope

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接