возникли странные проблемы с AFNetworking в последнее время. У меня есть PHP-бэкэнд, и я использую платформу SLIM. Упрощенный пример того, что происходит: если я использую ссылку Http: //xxx.xxx.xx.xx/InstaAPI/hi это должно называться:
$app->get('/hi', function() use($app) {
$app->response->setStatus(200);
echo "hiiii\n";
});
Теперь в моем коде объектива-C у меня есть:
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager GET:@"http://xxx.xxx.xx.xx/InstaAPI/hi" parameters:nil success:^(AFHTTPRequestOperation * _Nonnull operation, id _Nonnull responseObject) {
NSLog(@"ok");
NSLog(@"%@",responseObject);
} failure:^(AFHTTPRequestOperation * _Nonnull operation, NSError * _Nonnull error) {
NSLog(@"fail");
NSLog(@"%@", operation.responseString);
}];
Результат, который я получаю в консоли вывода:
015-10-08 18:30:20.650 iReporter[12822:3214201] fail
2015-10-08 18:30:20.650 iReporter[12822:3214201] hiiii
Понятия не имею, почему он вызывает блок сбоя. В конце концов, статус установлен на 200, так что все должно быть в порядке. Может ли кто-нибудь дать мне несколько советов о том, что я могу делать здесь неправильно, пожалуйста?
Собираюсь ответить на это сам. Это оказалось очень просто. Мои заголовки установлены на 'Content-Type', 'application/json'
, Линия echo "hiiii\n";
это не JSON, поэтому мне пришлось использовать:
$response = array("Response"=>"HI!");
$echo json_encode($response);
Причина, по которой я получал подобные ошибки, заключалась в том, что я пытался отлаживать код, рассеивая эхо в глупых местах, чтобы проверить, куда попало выполнение в моем PHP-скрипте. Мораль истории, не используйте ни одного эха, если ваши заголовки установлены в JSON!
Других решений пока нет …