Как удалить заголовки в NSMutableURLRequest? - PullRequest
6 голосов
/ 13 декабря 2011

Как сделать запрос, который не содержит полей заголовков?Запросы отправляются моей собственной реализации сервера с нуля, который не заботится о полях заголовка.Максимальный запрос будет содержать только текст сообщения.Дайте мне знать, если мне не хватает чего-то логичного.

Пожалуйста, не говорите мне о ASIHTTPRequest.Спасибо.

Ответы [ 4 ]

10 голосов
/ 26 мая 2012

Поскольку я хотел удалить определенный заголовок в NSMutableURLRequest, я только что обнаружил, что вызов setValue: forHTTPHeaderField: со значением nil фактически удаляет его.

Это не задокументировано Apple, но кажется вполне логичным.

2 голосов
/ 24 октября 2014

Для меня код

[request addValue:@"" forHTTPHeaderField:@"User-Agent"];

добавил только пустую строку вместо очистки User-Agent.Вместо этого с помощью setValue это исправлено:

[request setValue:@"" forHTTPHeaderField:@"User-Agent"];
2 голосов
/ 04 февраля 2014

Я обнаружил, что для некоторых полей заголовка («User-Agent» является одним из них), установка значения заголовка равным nil с использованием

[request addValue:nil forHTTPHeaderField:@"User-Agent"];

фактически не удаляет поле заголовка, новместо этого задайте для него значение по умолчанию!

Если вы действительно хотите удалить содержимое, достаточно установить значение в пустую строку с

[request addValue:@"" forHTTPHeaderField:@"User-Agent"];
1 голос
/ 13 декабря 2011
  1. Почему бы просто не игнорировать их, если вы контролируете реализацию сервера?

  2. Работает ли [request setAllHTTPHeaderFields:[NSDictionary dictionary]]?

  3. Если # 2 не работает, попробуйте создать свой собственный подкласс, который всегда возвращает пустой словарь из метода allHTTPHeaderFields, а nil из метода valueForHTTPHeaderField:.Но NSURLConnection может сделать копию вашего запроса, поэтому вам, возможно, придется переопределить также copyWithZone:.

...