6

是否可以更改RKObjectManager创建后的基本 URL?

我有登录框,并根据昵称决定我应该使用哪个 API 的 URL。如果我RKObjectManager在填写昵称/密码后创建,我只能从 RestKit ( https://groups.google.com/forum/?fromgroups#!topic/restkit/wFNhpCW-URA ) 进行一次调用。如果我创建RKObjectManager viewDidLoad函数 - 我无法更改 URL。

我的问题有相同的解决方案吗?

谢谢。

4

4 回答 4

12

刚刚花了一段时间弄清楚如何在 v0.20 中做到这一点。据我所知,如果不进入 AFNetworking 源代码,您将无法直接更改基本 URL。您可以创建一个新的HTTPClient并设置它,但我发现这会导致更多问题,大概是因为HTTPClient当您设置时RestKit 正在 AFNetworking 上进行一些额外的配置RKObjectManager,并且通过直接设置客户端您错过了这一点。

我想出了这个解决方案,即RKObjectManager使用新的 baseURL 创建另一个并重新添加描述符。您还需要再次设置序列化和标头类型。

NSString *urlString = @"http://www.something.com/api";
RKObjectManager *newManager = [RKObjectManager managerWithBaseURL:[NSURL URLWithString:urlString]];
[newManager setRequestSerializationMIMEType:RKMIMETypeJSON];
[newManager setAcceptHeaderWithMIMEType:RKMIMETypeJSON];
[newManager addResponseDescriptorsFromArray:[RKObjectManager sharedManager].responseDescriptors];
[newManager addRequestDescriptorsFromArray:[RKObjectManager sharedManager].requestDescriptors];
[RKObjectManager setSharedManager:newManager];

相关文档:在 RestKit 中使用多个基本 URL

于 2013-06-18T23:38:37.050 回答
6

这是初始化后更改 RestKit 的方法baseURL

[RKObjectManager sharedManager].client.baseURL = [RKURL URLWithString:newBaseUrlString];

来自 RestKit 文档的通知:

更改 baseURL 具有导致重新构建 requestCache 实例的副作用。缓存是按主机维护的。

我使用它,它工作正常:)

于 2012-08-31T09:43:41.870 回答
2

当心!

我使用了 RestKit 2.0 的公认答案,但不幸的是,这导致在 restkit 中难以调试崩溃。起作用的只是将所有描述符创建和其他对象管理器设置封装到一个方法中,并在调用 [RKObjectManager setSharedManager:newManager] 之前使用新的对象管理器对象调用它;

于 2014-01-31T03:36:04.237 回答
1

我认为没有解决方案。RestKit 在内部使用基本 URL,不能更改。

于 2012-05-17T14:46:55.327 回答