Прочитайте строку состояния (код состояния и фразу причины) с помощью AFHTTPRequestOperation AFNetworking.

Я переключаюсь с ASIHTTPRequest на AFNetworking в приложении для iOS.

RF2616 (HTTP/1.1) определяет "статус -line» комбинацией «Код состояния» и «Фраза причины». Иногда сервер добавляет некоторую конкретную информацию в эту «Фразу причины», и я нашел довольно удобным то, что ASIHTTPRequest позволил мне легко получить к ней доступ через

ASIHTTPRequest *request = ...;
NSString *reason = request.responseStatusMessage;

Моя проблема в том, что я не могу найти способ сделать это с помощью AFHTTPRequestOperation

NSMutableURLRequest *request = ...;
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];

В обоих блоках завершения/сбоя операции я могу получить код состояния, выполнив:

int statusCode = [operation.response statusCode];

Но я не могу найти, где взять «Фразу разума».

Некоторые ответы на StackOverflow предполагают, что он будет находиться в одной из записей [operation.response allHeaderFields], но это не так.

Ответ на этот вопрос ‹‹ может При доступе к фразе причины из строки состояния HTTP в NSHTTPURLResponse >> предлагается изменить поведение сервера, но это не всегда доступно.

Есть идеи?


person Thibault D.    schedule 19.09.2013    source источник
comment
С каким URL вы работаете?   -  person David Snabel-Caunt    schedule 19.09.2013


Ответы (1)


NSHTTPURLResponse не реализует метод, который предоставляет данные, и HTTP RFC не требует этого. AFNetworking использует NSURLRequest/NSURLResponse, поэтому AFNetworking также не может вам его предоставить. С другой стороны, ASIHTTPRequest может, потому что он использует низкоуровневую структуру CFNetwork.

Совет, данный в других ответах, чтобы переместить эту информацию в ваши заголовки или тело, является лучшим ответом.

Вы также можете отправить запрос на улучшение в Apple и/или придерживаться ASIHTTPRequest.

person Aaron Brager    schedule 19.09.2013
comment
В порядке. Это был ответ, который я боялся услышать :) - person Thibault D.; 20.09.2013