Swift | Ошибка с body запроса
Есть вот такой запрос:
static func signUpWithCode(body: Data, completion: @escaping () -> ())
guard let endpoint = URL(string: baseUrl + "auth/signup") else { return }
let httpsHeaders: HTTPHeaders = ["Content-Type:": "application/json", "Accept": "application/json"]
let httpBody: Data = body
AF.request(endpoint, method: .post, parameters: httpBody, headers: httpsHeaders).validate().responseJSON { (response) in
switch response.result {
case .success(let value):
print("Response \(value)")
case .failure(let error):
print(error)
}
}
}
В качестве body передаю следующее:
let body: [String: Any] = [
"name": info.name,
"second_name": info.second_name,
"surname": info.surname,
"phone": info.phone,
"birthday": dateOfBirth.text!,
"city": city.text!,
"sex": info.sex,
"code": 1234
]
В ответ получаю следующее: https://i.imgur.com/vVRZEZr.png
Пытался закодировать модель в JSON, получал следующее (при этом тип body менял на [String: Any]): https://i.imgur.com/x75hdEE.png
В Postman запрос работает корректно.
В чём может быть проблема?
Ответы (2 шт):
Автор решения: Andrew
→ Ссылка
Я не увидел как именно вы кодировали в Json, поэтому могу предложить вариант который использую у себя:
let parameters = ["username": loginText ?? "","password": passwordText ?? "","type":"mobile"]
var request = URLRequest(url: Pathes.init(endpoint: "login").resourseUrl)
request.httpMethod = HTTPMethod.post.rawValue
request.httpBody = try? JSONSerialization.data(withJSONObject: parameters, options: []);
request.setValue("application/json; charset=UTF-8", forHTTPHeaderField: "Content-Type")
попробуйте сериализовать все это в json и отправить. Плюс запрос я посылаю так:
AF.request(request)...
Автор решения: Andreas
→ Ссылка
Оказывается у меня была проблема с заголовками. У меня было:
let httpHeaders: HTTPHeaders = ["Content-Type": "application/json", "Accept": "application/json"]
Добавил двоеточие везде и заработало:
let httpHeaders: HTTPHeaders = ["Content-Type:": "application/json", "Accept:": "application/json"]