我尝试使用AFNetworking查询elasticsearch(Searchbox.io)的托管实例。不幸的是,我似乎无法使语法正常工作。例如,使用curl的以下语句可以正常工作并返回我期望的内容。
curl -XGET 'http://api.searchbox.io/api-key/<MYAPIKEY>/<MYINDEX/_search' -d '{"query" : {"query_string" : {"query" : "searchTerm"}}}'
我从Searchbox.io获取包含“searchTerm”的文档。超。但是,当我尝试在AFNetworking中实现相同时,Searchbox.io API返回500错误,注意“解析失败[无法解析源[ na ]]];嵌套”以下是调用在我的AFHTTPClient的子类中。
NSDictionary *searchDict = @{@"query":@{@"query_string":@{@"query":@"searchTerm"}}};
[self getPath:[NSString stringWithFormat:@"_search"]
parameters:searchDict
success:^(AFHTTPRequestOperation *operation, id responseObject) {
if ([responseObject isKindOfClass:[NSDictionary class]]) {
NSLog(@"Search Results: \n\n %@", responseObject);
}
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Search Error: %@", error);
}
}];
FYI - 在此调用之前,使用以下语句设置子类AFHTTPClient。子类AFHTTPClient客户端正常工作,并且正确设置了baseURL。
[self registerHTTPOperationClass:[AFJSONRequestOperation class]];
[self setDefaultHeader:@"Accept" value:@"application/json"];
对于我的新手来说,看起来AFNetworking处理searchDict与curl语句中的文字不同。总结一下,在AFNetworking中实现的上述curl语句的等价物是什么?提前致谢
答案 0 :(得分:0)
经过深入挖掘后,我能够通过以下方式开始工作:
使用postPath:parameters:success:failure方法来点击API
[self setParameterEncoding:AFJSONParameterEncoding];
[self registerHTTPOperationClass:[AFJSONRequestOperation class]];
[self setDefaultHeader:@"Accept" value:@"application/json"];
为什么curl语句是-XGET并且AFNetworking方法将是POST,这超出了我的意义。当然是我的误解。