RESTKit:BaseURL 和路径模式
Posted
技术标签:
【中文标题】RESTKit:BaseURL 和路径模式【英文标题】:RESTKit: BaseURL & Path Pattern 【发布时间】:2014-03-22 14:57:23 【问题描述】:ios7 和 RESTKit 0.20.3
以下是我需要点击以从 Google Maps API 获得响应的 URL(我更改了密钥):
https://maps.googleapis.com/maps/api/place/autocomplete/json?input=coffee&sensor=true&key=1234&location=0.000000,0.000000&radius=100.000000
当我在浏览器中输入上面的 URL 时,我会返回一个 JSON (200 OK)
input
是用户提供的搜索字符串。我已将其硬编码到上面的 URL 中。
以下是我尝试过的,得到 404 错误:
NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"https://maps.googleapis.com/maps/api/placeautocomplete/json?input=%@&sensor=true&key=1234&location=0.000000,0.000000&radius=100.000000", [input stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:mapping
method:RKRequestMethodGET
pathPattern:@""
keyPath:@"predictions" statusCodes:statusCodeSet];
我还尝试了以下给出错误Code=1001 "No response descriptors match the response loaded."
的方法:
NSIndexSet *statusCodeSet = RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful);
RKMapping *mapping = [TBSRESTMappingProvider googleAutoCompleteMapping];
NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"https://maps.googleapis.com/maps/api/place/autocomplete/json?input=coffee&sensor=true&key=1234&location=0.000000,0.000000&radius=100.000000"]];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:mapping
method:RKRequestMethodGET
pathPattern:@""
keyPath:@"predictions" statusCodes:statusCodeSet];
RKObjectRequestOperation *operation = [[RKObjectRequestOperation alloc] initWithRequest:request
responseDescriptors:@[responseDescriptor]];
-
在不硬编码
input
sensor
location
key
和 radius
的情况下提供完整 URL 的最佳做法是什么?
如何修复Code=1001 "No response descriptors match the response loaded."
?
【问题讨论】:
【参考方案1】:您请求的 URL 路径需要与您提供给响应描述符的路径模式相匹配。如果您想按照自己的方式工作,请将路径模式设置为 nil
(匹配所有内容)。
最佳实践通常是使用 RKObjectManager
实例并调用 getObjectsAtPath:parameters:success:failure:
并传递应附加到请求 URL 的参数字典(由基本 URL、路径和参数构建)。
【讨论】:
谢谢。我一直在谷歌搜索附加请求 URL 的示例。你能给我指一个吗? “追加”是什么意思?您在对象管理器上设置基本 URL,将路径和参数传递给get
方法...
我是否在 getObjectsAtPath:baseURL BaseURL = maps.googleapis.com/maps/api/place/autocomplete/json 中设置 baseurl?对于参数,我将有一本字典。 “输入”:“随便”?
在创建 RKObjectManager
实例时设置基本 URL。以上是关于RESTKit:BaseURL 和路径模式的主要内容,如果未能解决你的问题,请参考以下文章