Я пытаюсь отправить что-то в API с помощью POST. Тело сообщения составлено из x 2 свойств.Почему одна версия моего сайта HTTP POST не работает?
Если я создаю тело сообщения как одну длинную строку: let postBody = "ministryId=nameOfMinistryHere&personId=1005"
, а затем закодировать строку следующим образом: urlRequest.httpBody = postBody.data(using: String.Encoding.utf8)
работает отлично.
Но я пытаюсь создать пост в качестве словаря, а затем передать его API, но не могу заставить его работать.
let postBody = ["ministryId":"nameOfMinistry", "personId":"1005"]
do {
try urlRequest.httpBody = JSONSerialization.data(withJSONObject: postBody, options: .prettyPrinted)
} catch {
print("problems serializing data")
}
Когда я использую последний вариант, я получаю ошибку 400 с сервера.
Что мне не хватает?
Заранее спасибо.
Хорошо, я добавил 'urlRequest.setValue (« application/json », forHTTPHeaderField:« Content-Type »)', и он сработал.Но я не знаю, почему? Может ли кто-нибудь объяснить? –
иногда вам нужно сообщить api, что вы используете json для запроса, иначе он не знает, что делать, и бросает E400 – Florensvb