【问题标题】:RestKit.ErrorDomain Code=-1011 response on Google geocoding API requestRestKit.ErrorDomain Code=-1011 对 Google 地理编码 API 请求的响应
【发布时间】:2013-11-03 17:14:21
【问题描述】:

我使用 RESTKit 向 Google 搜索 API 发送 HTTP GET:

http://maps.googleapis.com/maps/api/geocode/json?sensor=false&address=Sulgen

这个 URL 在与 NSURLRequest 一起使用时可以正常工作。

RESTKit 将此字符串转换为

http://maps.googleapis.com/maps/api/geocode/json/?sensor=false&address=Sulgen

提示:在字符串之前插入一个斜杠

我使用 GET 方法来触发请求。这应该如何工作?

编辑:这是导致上述行为的代码:

+ (void)loadGoogleMapsApiLocation_Restkit:(NSString*)searchString
{
/// String definitions
NSString *requestString = [NSString stringWithFormat:@"http://maps.googleapis.com/maps/api/geocode/json?sensor=false&address=Frankfurt"];

NSLog(@"requestString: %@",requestString);

/// Create Mappers
RKObjectMapping *objectMapping = [RKObjectMapping mappingForClass:[GooglePlacemark class]];

[objectMapping addAttributeMappingsFromArray:
                       @[@"formatted_address"]];

/// setup responseDesriptor
NSString *key_path = @"results";

/// use this new Restkit method instead of the deprecated one
RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:objectMapping
                                             method:RKRequestMethodGET
                                        pathPattern:nil
                                            keyPath:key_path
                                        statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];

/// Create Manager, connect responseDescriptor and execute
RKObjectManager *manager = [RKObjectManager managerWithBaseURL:[NSURL URLWithString:requestString]];
[manager addResponseDescriptor:responseDescriptor];

[manager getObject:nil
              path:@""
        parameters:nil
           success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult)
           {
               NSLog (@"sucess!");
           }

           failure:^(RKObjectRequestOperation *operation, NSError *error)
           {
               NSLog (@"Error: %@", error);
               NSLog (@"Response: %@", operation.HTTPRequestOperation.responseString);
           }
];
}

错误信息如下:

 I restkit.network:RKObjectRequestOperation.m:150 GET 'http://maps.googleapis.com/maps/api/geocode/json/?sensor=false&address=Frankfurt'

E restkit.network:RKObjectRequestOperation.m:547 Object request failed: Underlying HTTP request operation failed with error: Error Domain=org.restkit.RestKit.ErrorDomain Code=-1011 "Expected status code in (200-299), got 404" UserInfo=0xafaff00 {NSLocalizedRecoverySuggestion=<!DOCTYPE html>

出现 404 消息是因为 Restkit 在请求字符串中插入了反斜杠。 如果在浏览器或其他客户端中触发原始字符串请求,则可以正常工作。

任何帮助表示赞赏。

【问题讨论】:

  • 它的工作原理是您显示您用于请求、映射、描述符的代码,然后我们建议您做错了什么;-)
  • 你是对的,我添加了所需的代码

标签: ios google-maps-api-3 restkit


【解决方案1】:

您需要重新组织您的基本 URL 和路径:

NSString *baseURLString = [NSString stringWithFormat:@"http://maps.googleapis.com/maps/api/geocode"];

NSString *requestPath = @"json";

NSDictionary *parameters = @{@"sensor":@"false",@"address":@"Frankfurt"};

RKObjectManager *manager = [RKObjectManager managerWithBaseURL:[NSURL URLWithString:baseURLString]];

[manager getObject:nil
              path:requestPath
        parameters:parameters
                   ...

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-21
  • 1970-01-01
  • 1970-01-01
  • 2012-10-17
  • 2021-09-12
相关资源
最近更新 更多