使用 AFNetworking 获取 OMDb API 数据

Posted

技术标签:

【中文标题】使用 AFNetworking 获取 OMDb API 数据【英文标题】:Fetching OMDb API data with AFNetworking 【发布时间】:2014-01-29 19:05:29 【问题描述】:

我正在尝试从OMDb API 获取电影数据

OMDb 提供的响应内容类型错误,但我能够绕过它。 但是,我仍然收到来自 AFNetworking 的错误:

获取 IMDBSingleMovieData 时出错:错误 Domain=NSCocoaErrorDomain Code=3840 "无法执行该操作 完全的。 (Cocoa 错误 3840。)”(JSON 文本不是以数组开头或 允许未设置片段的对象和选项。) UserInfo=0x10a7451d0 NSDebugDescription=JSON 文本不是以数组或对象开头并且 允许未设置片段的选项。

代码:

// add url request parameters
NSDictionary* parameters = @ @"i" : [NSString stringWithFormat:@"tt%d", identifier] ;

// run the request operation
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];

    manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/html"];
[manager POST:@"http://www.omdbapi.com" parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) 
        self.singleIMDBMovieData = [NSDictionary dictionaryWithDictionary:responseObject];
        [self.delegate updateIMDBMovieDetails];
        NSLog(@"Object returned %@", self.singleIMDBMovieData);
 failure:^(AFHTTPRequestOperation *operation, NSError *error) 
    NSLog(@"Error while fetching IMDBSingleMovieData: %@", error);
];

我能做些什么来解决这个问题? 来自 API 的示例响应:http://www.omdbapi.com/?i=tt0993846

【问题讨论】:

我建议改用TMDB;它有一些很好的包装库,例如 ios themoviedb.org/documentation/api/wrappers-libraries 是的,但我已经有一个我想要搜索数据的 IMDB id。 TMBD 目前不提供该功能 【参考方案1】:

您正在发出POST 请求,但您想获取数据,因此您应该使用GET

[manager GET:@"http://www.omdbapi.com" parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) 
        self.singleIMDBMovieData = [NSDictionary dictionaryWithDictionary:responseObject];
        [self.delegate updateIMDBMovieDetails];
        NSLog(@"Object returned %@", self.singleIMDBMovieData);
 failure:^(AFHTTPRequestOperation *operation, NSError *error) 
    NSLog(@"Error while fetching IMDBSingleMovieData: %@", error);
];

【讨论】:

以上是关于使用 AFNetworking 获取 OMDb API 数据的主要内容,如果未能解决你的问题,请参考以下文章

OMDB Api 是不是从 IMDB 检索信息

html 使用OMDB api的Ajax到HTML示例

带有路由器的 Vue.js 和 OMDb 页面

iOS开发网络数据之AFNetworking使用

无法在 AFNetworking 中获取下载进度

iOS - 使用 AFNetworking 获取图像保持缓存