Vot*_*eam 7 ios swift alamofire
我正在尝试使用 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)")
}
}
Run Code Online (Sandbox Code Playgroud)
执行上述代码时出现以下错误:“获取问题数据时出错” Optional(Alamofire.AFError.urlRequestValidationFailed(reason: Alamofire.AFError.URLRequestValidationFailureReason.bodyDataInGETRequest(23 bytes)))
Vla*_*lav 11
Use URLEncoding.default instead of JSONEncoding.default
AF.request(path,
method: .get,
parameters: params,
encoding: URLEncoding.default,
headers: nil)
.response { (responseData) in
}
Run Code Online (Sandbox Code Playgroud)
您必须删除“参数”参数。
而不是这样做:
AF.request("https://httpbin.org/get",
method: .get,
parameters: [:],
encoding: URLEncoding.httpBody,
headers: [:])
Run Code Online (Sandbox Code Playgroud)
做这个:
AF.request("https://httpbin.org/get",
method: .get,
encoding: URLEncoding.httpBody,
headers: [:])
Run Code Online (Sandbox Code Playgroud)
现在,当您尝试使用正文数据发出请求时,Alamofire 5 和 Apple 的 2019 框架会产生错误GET,因为此类请求无效。我建议检查以确保这是您的服务器所期望的,如果它确实需要GET请求的正文数据,请联系 API 提供商并请求更改,因为运行 Apple 2019 操作系统的设备无法做出这样的操作要求。
| 归档时间: |
|
| 查看次数: |
7941 次 |
| 最近记录: |