Ошибка с body запроса

post
swift
alamofire

#1

Есть вот такой запрос:

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

а что вам постман отвечает?


#3

Попробуй так

let parameters: [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
]

static func signUpWithCode(parameters: [String: Any], completion: @escaping () -> ()) {
    guard let endpoint = URL(string: baseUrl + "auth/signup") else { return }
    let httpsHeaders: HTTPHeaders = ["Content-Type:": "application/json", "Accept": "application/json"]
   
    AF.request(endpoint, method: .post, parameters: parameters, headers: httpsHeaders).validate().responseJSON { (response) in
        switch response.result {
        case .success(let value):
            print("Response \(value)")
        case .failure(let error):
            print(error)
        }
    }
}

#4

Оказывается у меня была проблема с заголовками. У меня было:
let httpHeaders: HTTPHeaders = ["Content-Type": "application/json", "Accept": "application/json"]

Добавил двоеточие везде и заработало:
let httpHeaders: HTTPHeaders = ["Content-Type:": "application/json", "Accept:": "application/json"]