Ошибка параметра Encoder, поскольку invalidRootObject? - PullRequest
0 голосов
/ 10 мая 2019

У меня проблема с параметром EncoderFailed, когда я пытаюсь отправить строку JSON 'parametersString' в веб-API, сообщение об ошибке может кто-то помочь мне решить проблему

отказ (Alamofire.AFError.parameterEncoderFailed (причина: Alamofire.AFError.ParameterEncoderFailureReason.encoderFailed (ошибка: Alamofire.URLEncodedFormEncoder.Error.invalidRootObject ( "строка (\" {\ п \\ "\\ аутентифицировать": {\ n \\ "userName \\": \\ "fan.doe \\", \ n \\ "password \\": \\ "12345 \\", \ n \\ "expiry \\": \\ "2019-05-03 18:00:00 \\ "\ п} \ п} \") ")))))

 static func Login(email:String, password:String, completion: @escaping (_ success: Bool, _ response: DataResponse<Data?>?) -> ()) {
        let urlString: 

        let parametersString = """
        {
        "authenticate": {
        "userName": "\(email)",
        "password": "\(password)",
        "expiry": "2019-05-03 18:00:00"
        }
        }
        """
         var response:DataResponse<Data?>?

        print(urlString)
        AF.request(urlString, method: .post, parameters: parametersString, encoding:  String.Encoding.utf8.rawValue,  headers: headers )
            .response { resp in
                response = resp
                print(response)
                if(response?.response?.statusCode == 200){
                    completion(true, response)

                }
                else {
                    completion(false, nil)
                }
        }

    }
}

1 Ответ

1 голос
/ 10 мая 2019

Возможно, вам потребуется отправить словарь [String:Any]

let parametersDic:[String:Any] = [
    "authenticate": [
    "userName": "\(email)",
    "password": "\(password)",
    "expiry": "2019-05-03 18:00:00"
]]
...