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"]
→ Ссылка