Swift 5 и Alamofire 5: метод GET ОШИБКА: Alamofire.AFError.URLRequestValidationFailureReason.bodyDataInGETRequest (22 байта) - PullRequest
0 голосов
/ 01 апреля 2020

Я пытаюсь получить записи из базы данных, используя Alamofire. Я отправляю параметры в запросе GET, как показано ниже.

let headers : HTTPHeaders = ["x-access-token": "\(t)","username":"\(Base.sharedManager.user)","password":"\(Base.sharedManager.pass)"]
let parm : [String: Any] = ["search_str" : self!.searchStr]
// let searchUrl = Base.sharedManager.URL+"questions/get/"+self!.searchStr
let searchUrl = Base.sharedManager.URL+"questions/get/"

AF.request(searchUrl, method: .get, parameters: parm, encoding:JSONEncoding.default , headers: headers, interceptor: nil).response { (responseData) in
    guard let data = responseData.data else {
        debugPrint("Error getting question data", responseData.error as Any)
        self?.showNoResults()
        return
    }

    do {
        let sResults = try JSONDecoder().decode(SearchResults.self, from: data)
        self!.searchReturn = [sResults]
        self!.qSearchTV.reloadData()
    } catch {
        self?.showNoResults()
        print("Error retriving questions \(error)")
    }                        
}

При выполнении приведенного выше кода получена ошибка ниже: «Ошибка при получении данных вопроса» Необязательно (Alamofire.AFError.urlRequestValidationFailed (причина: Alamofire.AFError.URLRequestValidationFailureReason. bodyDataInGETRequest (23 байта)))

Ответы [ 2 ]

0 голосов
/ 29 апреля 2020

Вы должны удалить параметр «параметры».

Вместо этого:

AF.request("https://httpbin.org/get",
              method: .get,
              parameters: [:],
              encoding: URLEncoding.httpBody,
              headers: [:])

Сделайте это:

AF.request("https://httpbin.org/get",
              method: .get,
              encoding: URLEncoding.httpBody,
              headers: [:])
0 голосов
/ 01 апреля 2020

Alamofire 5 и платформы Apple 2019 теперь выдают ошибку при попытке сделать запрос GET с данными тела, так как такой запрос недействителен. Я бы посоветовал проверить, чтобы убедиться, что это именно то, чего ожидает ваш сервер, и если ему действительно требуются данные тела для GET запросов, обратитесь к провайдеру API и запросите изменение, поскольку ни одно устройство под управлением ОС Apple 2019 не сможет это сделать. сделать такой запрос.

...