xCode - Mashape API - Unirest
Мне нужна помощь от тебя. Я нашел API на MaShape для Metascore, но я просто не могу заставить его работать. Я использовал Cocoapod для загрузки инфраструктуры Unirest и скопировал вставленный фрагмент кода из Mashape
NSDictionary* headers = @{@"X-Mashape-Authorization": @"wZrjWIiAsqdSLGIh3DQzrKoZ5Y3wlo6E"};
NSDictionary* parameters = @{@"title": @"The Elder Scrolls V: Skyrim", @"platform": 1, };
UNIHttpJsonResponse* response = [[UNIRest post:^(UNIBodyRequest* request) {
[request setUrl:@"https://byroredux-metacritic.p.mashape.com/find/game"];
[request setHeaders:headers];
[request setParameters:parameters];
}] asJson];
Это дало мне кучу ошибок, и я исправил это так:
NSDictionary* headers = @{@"X-Mashape-Authorization": @"wZrjWIiAsqdSLGIh3DQzrKoZ5Y3wlo6E"};
NSDictionary* parameters = @{@"title": @"The Elder Scrolls V: Skyrim", @"platform": @"1", };
UNIHTTPJsonResponse* response = [[UNIRest post:^(UNISimpleRequest* request) {
[request setUrl:@"https://byroredux-metacritic.p.mashape.com/find/game"];
[request setHeaders:headers];
[request setParameters:parameters];
}] asJson];
но всякий раз, когда я иду и отлаживаю код и заглядываю внутрь ответа, он пуст, как будто API не работает. Ребята, скажите, что я делаю не так?
Спасибо
1 ответ
Решение
Ваш (фиксированный) фрагмент кода выглядит хорошо (первый действительно был ошибочным), и вы должны быть в состоянии напечатать результат следующим образом:
UNIHTTPJsonResponse *response = [[UNIRest post:^(UNISimpleRequest *request) {
[request setUrl:@"https://byroredux-metacritic.p.mashape.com/find/game"];
[request setHeaders:headers];
[request setParameters:parameters];
}] asJson];
NSDictionary *json = [NSJSONSerialization JSONObjectWithData:response.rawBody
options:kNilOptions
error:nil];
NSLog(@"Response status: %ld\n%@", (long) response.code, json);
Но вместо того, чтобы делать синхронный вызов, я бы также предложил вам переключиться на асинхронный способ, а также проверить наличие ошибок во время процесса и анализа JSON:
[[UNIRest post:^(UNISimpleRequest *request) {
[request setUrl:@"https://byroredux-metacritic.p.mashape.com/find/game"];
[request setHeaders:headers];
[request setParameters:parameters];
}] asJsonAsync:^(UNIHTTPJsonResponse* response, NSError *error) {
if (error) {
// Do something with the error
}
NSError *jsonError;
NSDictionary *json = [NSJSONSerialization JSONObjectWithData:response.rawBody
options:kNilOptions
error:&jsonError];
if (jsonError) {
// Do something with the error
}
NSLog(@"Async response status: %ld\n%@", (long) response.code, json);
// Unirest also provides you this which prevents you from doing the parsing
NSLog(@"%@", response.body.JSONObject);
}];