У меня была похожая проблема.Я хотел изменить заголовочные поля http-ответа.Я нуждался в этом, потому что хотел предоставить кэшированный URL-ответ для UIWebView и хотел обмануть веб-представление тем, что срок ответа не истек (то есть я хотел изменить свойство заголовка «Cache-Control», но оставить остальные заголовки).Мое решение состояло в том, чтобы использовать NSKeyedArchiver для кодирования исходного ответа http и перехватывать сериализацию с делегатом.В
-(id) archiver:(NSKeyedArchiver*) archiver willEncodeObject:(id) object
я проверяю, является ли объект NSDictionary, и если да, я возвращал измененный словарь (то есть с обновленным заголовком «Cache-Control»).После этого я просто десериализовал сериализованный ответ, используя NSKeyedUnarchiver.Конечно, вы можете подключиться к unarchiver и изменить заголовки в его делегате.
Обратите внимание, что в iOS 5 Apple добавила
-(id)initWithURL:(NSURL*) url statusCode:(NSInteger) statusCode HTTPVersion:(NSString*) HTTPVersion headerFields:(NSDictionary*) headerFields
, которого нет в документации (ошибка документации),но это в публичном API NSHTTPURLResponse