一开始是用亚马逊的API,但发现提供的接口内容返回不是中文的,找了半天,还是决定用豆瓣的API
https://api.douban.com/v2/book/isbn/:9787115263049
返回内容是JSON格式
但一般AFNetWorking缺省不支持https, 于是按以下步骤修改:
在pch文件中加入
#import <SystemConfiguration/SystemConfiguration.h>
#import <MobileCoreServices/MobileCoreServices.h>
#define AFNETWORKING_ALLOW_INVALID_SSL_CERTIFICATES
同时在请求代码时专门处理:
-(void) searchBookByIsbn: (NSString *) isbn
{
AFSecurityPolicy *securityPolicy = [AFSecurityPolicy defaultPolicy];
securityPolicy.allowInvalidCertificates = YES;
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.securityPolicy = securityPolicy;
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
NSString *url = [NSString stringWithFormat: @"https://api.douban.com/v2/book/isbn/:%@", isbn];
manager.requestSerializer = [AFJSONRequestSerializer serializer];
//把当前对象转成NSDirectory
//NSDictionary *objDict = [self allValues];
// NSLog(@"objDict=%@", objDict);
[manager GET:url parameters:nil
success:^(AFHTTPRequestOperation *operation, id responseObject) {
// 解析成功
//NSLog(@"%@", responseObject);
//NSLog(@"str = %@", result);
[self parseJsonData: (NSData *)responseObject];
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
// 解析失败
NSLog(@"error:++++%@",error.localizedDescription);
// [self showError: error.localizedDescription];
}];
}
//ios5中apple增加了解析JSON的api——NSJSONSerialization
//NSJSONSerialization在效率上完胜SBJSON、TouchJSON、YAJL、JSONKit、NextiveJson
-(void) parseJsonData:(NSData *)data
{
NSError *error;
NSDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];
if (json == nil) {
return;
}
//如果大于0,代表是后台报的错,则需要弹出消息框提示错误信息
if ([json objectForKey: @"code"])
if ([[json objectForKey: @"code"]intValue] > 0)
{
NSLog(@"error: %@", [json objectForKey:@"msg"]);
// [self showError:@"查询不到指定编码的书号"];
return;
}
NSLog(@"json info: %@\t\n",json);
}