使用 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 数据的主要内容,如果未能解决你的问题,请参考以下文章