Alamofire Swift 3.0 Дополнительный аргумент в вызове

Я перенес свой проект в Swift 3 (и обновил Alamofire до последней версии Swift 3 с pod 'Alamofire', '~> 4.0' в подфайле).

Теперь я получаю ошибку «Дополнительный аргумент в вызове» на каждом Alamofire.request. Например:

 let patientIdUrl = baseUrl + nextPatientIdUrl Alamofire.request(.POST, patientIdUrl, parameters: nil, headers: nil, encoding: .JSON) 

Может ли кто-нибудь сказать мне, почему?

Согласно документации Alamofire для версии 4.0.0 URL-запрос с HTTP- методом будет выглядеть следующим образом:

 Alamofire.request("https://httpbin.org/get") // method defaults to `.get` Alamofire.request("https://httpbin.org/post", method: .post) Alamofire.request("https://httpbin.org/put", method: .put) Alamofire.request("https://httpbin.org/delete", method: .delete) 

Таким образом, ваш запрос будет:

 Alamofire.request(patientIdUrl, method: .post, parameters: nil, encoding: JSONEncoding.default, headers: nil) 

и образец запроса будет:

 Alamofire.request(url, method: .post, parameters: param, encoding: JSONEncoding.default, headers: [AUTH_TOKEN_KEY : AUTH_TOKEN]) .responseJSON { response in print(response.request as Any) // original URL request print(response.response as Any) // URL response print(response.result.value as Any) // result of response serialization } 

Надеюсь это поможет!

Этот работал для меня.
Нет необходимости удалять параметр кодирования

Swift 3.x / 4.x

 Alamofire.request("https://yourServiceURL.com", method: .post, parameters: parameters, encoding: JSONEncoding.default, headers: nil).responseJSON { (response:DataResponse) in switch(response.result) { case .success(_): if let data = response.result.value{ print(response.result.value) } break case .failure(_): print(response.result.error) break } } 

и убедитесь, что параметры имеют тип

 [String:Any]? 

В случае Get

 Alamofire.request("https://yourGetURL.com", method: .get, parameters: ["":""], encoding: URLEncoding.default, headers: nil).responseJSON { (response:DataResponse) in switch(response.result) { case .success(_): if let data = response.result.value{ print(response.result.value) } break case .failure(_): print(response.result.error) break } } 

Даже работает с

 JSONEncoding.default 

Для заголовков

Если вы передаете заголовки, убедитесь, что их тип должен быть [String:String]

Перейдите по ссылке Parameter Encoding Link https://github.com/Alamofire/Alamofire/blob/master/Documentation/Alamofire%204.0%20Migration%20Guide.md#parameter-encoding-protocol

Почтовый метод Alamofire 4.0 с Swift 3.0 и xCode 8.0

 Alamofire.request(URL, method: .post, parameters: PARAMS) .responseJSON { closureResponse in if String(describing: closureResponse.result) == "SUCCESS" { // Sucess code } else { // Failure Code } } 

Мое решение – если вы используете заголовки, его тип должен быть [String: String].

Я просто решил ту же проблему, что и вы. Проблема в том, что я импортировал Alamofire в заголовок, поэтому я просто удаляю Alamofire при запросе на вызов. Как это:

request (.POST, patientIdUrl, параметры: ноль, заголовки: ноль, кодировка: .JSON)

Надеюсь, это может вам помочь.

Эта ошибка соответствует значению параметров. Он должен быть [String: String]

 let url = URL(string: "http://yourURLhere")! let params: [String: String] = ["name": "oskarko", "email": "[email protected]", "sex": "male"] Alamofire.request(url, method: .post, parameters: params, encoding: URLEncoding.default, headers: nil).validate(statusCode: 200..<600).responseJSON() { response in switch response.result { case .success: var result = [String:String]() if let value = response.result.value { let json = JSON(value) } case .failure(let error): print("RESPONSE ERROR: \(error)") } } 

Я столкнулся с тем же методом «Дополнительные аргументы» в ошибке вызова, когда моя переменная URL была вне области видимости .

В вашем случае, пожалуйста, убедитесь, что baseUrl и nextPatientIdUrl находятся в области действия, когда они используются Alamofire.request(patientIdUrl,..) .

Надеюсь, это решит вашу проблему. Спасибо вам!

Для меня это работает.

Для запроса GET

 Alamofire.request("http://jsonplaceholder.typicode.com/todos/1/get").responseJSON { (response:DataResponse) in switch(response.result) { case .success(_): if response.result.value != nil{ print(response.result.value!) } break case .failure(_): print(response.result.error) break } } 

Для POST

 let parameters = NSDictionary(object: "nara", forKey: "simha" as NSCopying) Alamofire.request("http://jsonplaceholder.typicode.com/posts", method: HTTPMethod.post, parameters: parameters as? Parameters, encoding: JSONEncoding.default, headers: nil).responseJSON { (response:DataResponse) in switch(response.result) { case .success(_): if response.result.value != nil{ print(response.result.value!) } break case .failure(_): print(response.result.error) break } } 

Спасибо @ Rajan Maheswari .

Я исправил эту проблему:

  1. Параметры порядка (URL-адрес, затем тип метода).
  2. Измените Encoding Enum как «JSONEncoding.default», например.

Обратите внимание: изменение подписи методов Alamofire в Swift 3

Две вещи, которые я нашел, стоит отметить.

  1. Удалите первую метку URL до ее значения. Используйте Alamofire.request("https://yourServiceURL.com", method: .post, вместо Alamofire.request(url: "https://yourServiceURL.com", method: .post,
  2. Убедитесь, что тип данных параметров – [String: String] . Заявите это явно.

Я копирую этот код из Alamofire, создаю URLRequest и использую метод Alamofire.request (URLRequest), избегаю этой ошибки

 originalRequest = try URLRequest(url: url, method: method, headers: headers) let encodedURLRequest = try encoding.encode(originalRequest!, with: parameters) 

Я исправил эту проблему следующим образом:

Просто удалите дополнительные параметры, просто parameters , encoding и headers , если эти параметры равны нулю, вы можете удалить их и оставить это,

 Alamofire.request(yourURLString, method: .post) 
 func API() { if Reachability.isConnectedToNetwork() { let headers = ["Vauthtoken":"Bearer \(apiToken)"] print(headers) // let parameter = ["iLimit":"10","iOffset":"0","iThreadId":"1"] ApiUtillity.sharedInstance.showSVProgressHUD(text: "Loding...") Alamofire.request(ApiUtillity.sharedInstance.API(Join: "vehicle/CurrentVehicleLists"), method:.get, parameters:nil, headers: headers).responseJSON { response in switch response.result { case .success: print(response) ApiUtillity.sharedInstance.dismissSVProgressHUD() let dictVal = response.result.value let dictMain:NSDictionary = dictVal as! NSDictionary let statusCode = dictMain.value(forKey: "status") as! Int if(statusCode == 200) { } else if statusCode == 401 { } else { } case .failure(let error): print(error) ApiUtillity.sharedInstance.dismissSVProgressHUD() } } } else { ApiUtillity.sharedInstance.dismissSVProgressHUD() ApiUtillity.sharedInstance.showErrorMessage(Title: "Internet Connection", SubTitle: "Internet connection Faild", ForNavigation: self.navigationController!) } } 

Если вы добавили файлы Alamofire локально, не используйте «Alamofire» перед запросом

 let apipath = “your api URL” request(apipath, method: .post, parameters: parameters, encoding: URLEncoding.default, headers: nil).responseJSON { response in switch(response.result) { case .success(_): do { let JSON = try JSONSerialization.jsonObject(with: response.data! as Data, options:JSONSerialization.ReadingOptions(rawValue: 0)) guard let JSONDictionary: NSDictionary = JSON as? NSDictionary else { print("Not a Dictionary") return } print("Post Response : \(JSONDictionary)") } catch let JSONError as NSError { print("\(JSONError)") } break case .failure(_): print("failure Http: \(String(describing: response.result.error?.localizedDescription))") break } } 
  • Swift 3 некорректная строковая интерполяция с неявно развернутыми опциями
  • Обновление закрытий для Swift 3 - @ escaping
  • Почему «nil» не совместим с «UnsafePointer » в Swift 3?
  • Как инициализировать структуру из объекта json
  • Shuffle array swift 3
  • Правильно Разбор JSON в Swift 3
  • Xcode 8 Beta 4 Swift 3 - изменилось поведение «круглого»
  • Что такое синтаксис Swift 3 animateWithDuration?
  • Singleton со свойствами в Swift 3
  • Добавить локальное уведомление в ios10 - быстрый 3
  • Как отправить dispatch_sync, dispatch_async, dispatch_after и т. Д. В Swift 3, Swift 4 и дальше?
  • Interesting Posts

    Чистые виртуальные функции могут не иметь встроенного определения. Зачем?

    Обнаружение нескольких нажатий клавиш в java

    В чем разница между предварительным приращением и пост-приростом в цикле (для / while)?

    Могу ли я сделать рабочий стол Ubuntu 11.10 похожим на Ubuntu Classic 11.04?

    Есть ли способ сделать currying в C?

    Пример кода для реализации PDF-ридера

    angular2 resolveAndCreate HTTP – отсутствует HTTP_PROVIDERS в RC7

    Является ли C строго типизированным?

    Получение строк, распознаваемых как имена переменных в R

    Не удалось подключить PostgreSQL к удаленной базе данных с помощью pgAdmin

    Установить шрифт для всех текстовых элементов в действии?

    Что такое горячая клавиша Excel для пересчета всей формулы в листе?

    Что определяет количество streamов, создаваемых Java ForkJoinPool?

    Используйте Picasso для получения обратного вызова с помощью Bitmap

    Как вы инвертируете / реверсируете строки в таблице в MS Word 2016?

    Давайте будем гением компьютера.