Вход с постом с Alamofire не работает - PullRequest
0 голосов
/ 23 января 2020

Здравствуйте, люди, я пытаюсь написать это сообщение с помощью Alamofire, но мне не удалось, когда я пытаюсь опубликовать это сообщение с почтальоном, я получил успешное сообщение.

fetch("urlofMyServer", {
    credentials: "include",
    method: "POST",
    body: new URLSearchParams({
      "identity": "example@mail.com",
      "credential": "hello123",
      "type": "normal_user",
    }) // content-type has to be application/x-www-form-urlencoded
}).then(() => console.log("success"));

это мой код с Alamofire, в чем я не прав?

public func makeLogin(param: [String:String], completion: @escaping ((Bool?) -> Void)){
        let headers: HTTPHeaders = [
            "Content-Type": "application/x-www-form-urlencoded"
        ]
        AF.request(endPoints.login.login, method: .post, parameters: param, encoding: JSONEncoding.default, headers: headers, interceptor: nil).responseJSON { (response) in
            if let status = response.response?.statusCode{
                do {
                    let result = try response.result.get()
                    if let data = result as? [String:String]{
                        print(data)
                        completion(true)
                    }
                } catch{
                    completion(false)
                }
            }else{
                completion(false)
            }
        }
    }

Мой параметр:

let info = [
     "identity" : "example@mail.com",
     "credential": "hello124",
     "type" : "normal_user"
] as! [String:String]

и мои заголовки:

let headers: HTTPHeaders = [
     "Content-Type": "application/x-www-form-urlencoded"
]

body postman headers postman params postman

Я использую Alamofire 5 и swift 5, повторяю, с почтальоном я получил успешное сообщение, но с Alamofire сообщение было: Missing required field: identity.

Ответы [ 2 ]

0 голосов
/ 23 января 2020

Попробуйте изменить на URLEncoding.default

0 голосов
/ 23 января 2020

просто измените кодировку: JSONEncoding.default на URLEncoding.httpBody, и вы хороши до go!

AF.request(endPoints.login.login, method: .post, parameters: param, encoding: URLEncoding.httpBody, headers: headers, interceptor: nil).responseJSON { (response) in
...