#ios #nsurlconnection #nsmutableurlrequest
#iOS #nsurlconnection #nsmutableurlrequest
Вопрос:
Как бы просто это ни было:
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:linkURLString]];
[request setHTTPMethod:@"POST"];
[request setTimeoutInterval:10];
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:[NSJSONSerialization dataWithJSONObject:jsonDictionary options:NSJSONWritingPrettyPrinted error:nil]];
Если я зарегистрирую значение для заголовка @"Content-Type"
, я получу ноль. И это то, что я получил в серверной части. Все остальные значения установлены и даже попробовали другие поля заголовка, работает нормально!. Я попытался установить тело перед заголовком и все равно получил ноль.
Комментарии:
1. Я не понимаю, почему это не должно фактически устанавливать заголовок Content-Type. Вы уверены, что объект запроса не освобождается или что-то в этом роде?
2. Он не выпущен, и другие параметры работают нормально.
3. Вероятно, самым простым способом найти решение было бы разместить POC-проект на Github, чтобы мы могли воспроизвести вашу проблему.
4. Серьезно, @ValerioSantinelli? POC на Github для настройки типа содержимого запроса URL :)?
5. 🙂 честно говоря, я не могу найти хорошую причину, по которой этот код не должен работать как есть
Ответ №1:
Я попытался скопировать и вставить ваш код, и у меня (null)
тоже получилось.
Распечатав список всех HTTPHeaderFields
( [request allHTTPHeaderFields]
), я получил:
Content-Type: {
"ContentU00ad-Type" = "application/json";
}
Как вы видите, есть странный символ Юникода: U00ad
.
Это причина, по которой, когда вы пытаетесь получить значение, связанное с Content-Type
, оно находит null
.
Итак, я попытался изменить строку @"Content-Type"
в вашем коде, и результат был:
Content-Type: {
"Content-Type" = "application/json";
}
И действительно, теперь ведение журнала:
NSLog(@"Content-Type: %@", [request valueForHTTPHeaderField:@"Content-Type"]);
Я получил:
Content-Type: application/json
Комментарии:
1. Во-первых, спасибо за редактирование сообщения и внесение отступов в код. Во-вторых, разумное мышление для исправления ошибки. Я копировал поле заголовка Content-Type из файла PDF. Не заметил, и он вставлен в неправильной кодировке.
2. Избегайте «копировать» -> «вставить», когда можете 🙂