ios - Alamofire 5:请求的多种编码类型
问题描述
我需要将一些参数放入查询字符串,将一些 json 放入 htpbody
所以我有这样的东西
public func asURLRequest() throws -> URLRequest
{
let combined = baseUrl.absoluteString + path
guard let url_ = URL(string: combined) else {
print ("invalid url \(combined)")
throw AFError.parameterEncodingFailed(reason: .missingURL)
}
guard var components = URLComponents(url: url_, resolvingAgainstBaseURL: false) else {
print ("invalid url \(url_)")
throw AFError.parameterEncodingFailed(reason: .missingURL)
}
// var items: [URLQueryItem] = components.queryItems ?? []
// for (key, value) in query_parameters ?? [:]{
// guard let value = value as? String else {
// assertionFailure()
// continue
// }
// let item = URLQueryItem(name: key, value: value)
// items.append(item)
// }
// components.queryItems = items
guard let url = components.url else {
print ("invalid compontns \(components)")
throw AFError.parameterEncodingFailed(reason: .missingURL)
}
let originalRequest: URLRequest = try URLRequest(url: url, method: method, headers: headers)
let params: Parameters = parameters
let uRLRequest = try parameterEncoding.encode(originalRequest, with: params)
if let query_parameters = query_parameters {
let encodedURLRequest = try URLEncoding.default.encode(uRLRequest, with: query_parameters)
return encodedURLRequest
}
return uRLRequest
}
但查询参数未编码:
https://somehostsomewhere/imobile/LoyaltyProxy?language=ru&path=v1/user_app/user/balance
路径中有斜线:-[
这里的讨论https://github.com/Alamofire/Alamofire/issues/374已于 2017 年死亡
我想弄错了,但我怀疑将来会有 alamofire 6 和 7 和 8 的线程
解决方案
推荐阅读
- prestashop - 我想要另一张图片,而不是封面图片产品
- module - 如何更改yii2默认模块
- javascript - 将复选框传递给隐藏的输入
- haskell - 第一个代码示例中的“Get Programming With Haskell”错误
- android - Nativescript-Camera 拍照后不显示刻度或交叉
- ios - 如何在 UIDocumentInteractionController 中使用 AirDrop 发送大文件
- get - 无需 API 从 Vimeo 获取 img 缩略图
- python - 我们如何在 Keras 中创建一个块(可重用的函数集)?
- nginx - Nginx 错误:19829#0: *24630 "/var/www/vhosts/ is not found (2: No such file or directory)
- flutter - 从状态 + 在更改更新状态时颤动文本字段值