Я только что переключился на RestKit 0.2 и в настоящее время использую новый «HttpClient», который в основном является AFHTTPClient. У меня есть такая строка кода:
RKObjectManager* objectManager = [RKObjectManager sharedManager];
NSDictionary* params = [[NSDictionary alloc] initWithObjectsAndKeys: login, @"username", password, @"password", nil];
[[objectManager HTTPClient]postPath:@"users/login/?format=json" parameters:params
success:^(AFHTTPRequestOperation *operation, id responseObject)
{
//reponseObject vs operation.response
NSLog(@"%@", responseObject);
}
failure:^(AFHTTPRequestOperation *operation, NSError *error)
{
NSLog(@"ERROR");
}];
Эти вызовы POST возвращают ответ JSON в форме: {"api_key": "....", "username": "...."}. Так просто.
Перед переключением на 0.2 я смог получить в ответе ключ api_key, выполнив следующие действия:
[[RKClient sharedClient] post:@"/users/login/?format=json" usingBlock:^(RKRequest *request)
{
request.onDidLoadResponse = ^(RKResponse *response)
{
id parsedResponse = [response parsedBody:NULL];
NSString *apiKey = [parsedResponse valueForKey:@"api_key"];
}
}.....];
http://restkit.org/api/master/Classes/RKResponse.html
Но теперь я не могу этого сделать, и если я сделаю NSLog для responseObject, я получаю:
<7b227265 61736f6e 223a2022 41504920 4b657920 666f756e 64222c20 22617069 5f6b6579 223a2022 61356661 65323437 66336264 35316164 39396338 63393734 36386438 34636162 36306537 65386331 222c2022 73756363 65737322 3a207472 75657d>
И что странно, если я это сделаю:
NSLog(@"%@", operation.responseString);
У меня есть JSON (в NSString).
Итак, два вопроса:
1) Почему при печати responseObject отображается шестнадцатеричный код, а не фактический ответ JSON?
2) Почему, если я выполняю операцию operation.responseString, отображается фактический объект ответа? Есть ли способ получить фактические данные в ResponseObject после анализа из JSON?