с недавней проблемой с 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!