ios - Restkit 基本 url 响应

标签 ios json web-services afnetworking restkit

我正在学习 Rest-kit。我正在尝试解析此网址 https://api.coursera.org/api/catalog.v1/courses?fields=language,shortDescription

我创建了一个 Courses 类。

@interface Courses : NSObject

@property (nonatomic, strong) NSString *name;

@end

在viewcontroller中我写了下面的代码

- (void)viewDidLoad
{
    [super viewDidLoad];

    [self configureRestKit];
    [self loadCourses];
}

- (void)configureRestKit
{

    //  https://api.coursera.org/api/catalog.v1/courses?fields=language,shortDescription

    // initialize AFNetworking HTTPClient
    NSURL *baseURL = [NSURL URLWithString:@"https://api.coursera.org"];
    AFHTTPClient *client = [[AFHTTPClient alloc] initWithBaseURL:baseURL];

    // initialize RestKit
    RKObjectManager *objectManager = [[RKObjectManager alloc] initWithHTTPClient:client];

    // setup object mappings
    RKObjectMapping *courseMapping = [RKObjectMapping mappingForClass:[Courses class]];
    [courseMapping addAttributeMappingsFromDictionary:@{
                                                       @"name":@"name"
                                                       }];
    // register mappings with the provider using a response descriptor
    RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:courseMapping method:RKRequestMethodGET pathPattern:@"/api/catalog.v1/courses?fields=language,shortDescription" keyPath:@"elements" statusCodes:[NSIndexSet indexSetWithIndex:200]];
    [objectManager addResponseDescriptor:responseDescriptor];
}

- (void)loadCourses
{
    [[RKObjectManager sharedManager] getObjectsAtPath:@"/api/catalog.v1/courses?fields=language,shortDescription" parameters:nil success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {
        NSLog(@"%@", mappingResult.array);

    } failure:^(RKObjectRequestOperation *operation, NSError *error) {
        NSLog(@"What do you mean by 'there is no Courses?': %@", error);
    }];
}

错误:_Error Domain=org.restkit.RestKit.ErrorDomain Code=1001 “没有响应描述符匹配加载的响应。” 我没有在成功 block 中得到响应。请纠正我。提前致谢

最佳答案

不要将查询参数添加到响应描述符上的路径模式中,并将它们设置为请求上的参数:

pathPattern:@"/api/catalog.v1/courses"

一般来说,我还会说 /api/catalog.v1/ 应该是基本 URL 的一部分,这样您就可以:

NSURL *baseURL = [NSURL URLWithString:@"https://api.coursera.org/api/catalog.v1/"];
...
... pathPattern:@"courses" ...
...
... getObjectsAtPath:@"courses" parameters:@{ @"fields" : @"language,shortDescription" } ...

关于ios - Restkit 基本 url 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27378962/

相关文章:

objective-c - JSONkit 排序问题

javascript - 使用 JSON.stringify() 将 JSON 对象转换为字符串时出现循环对象值错误

iphone - 手机 : one single request or multiple smaller requests?

web-services - REST Web服务的主要缺点

c# - Web 引用可以从另一个类公开吗?

android - 视觉,图标,图像等移动应用程序设计

ios - 使用谓词从数组中获取无序数据

ios - 如何使用 NSMutableArray 和 UISearchController 进行过滤

javascript - AJAX 响应 : sugestions for JSON format?

ios - 使用具有网关保护的 JSON Webservice 时 IOS 无响应