ios - 发送请求时从数据库中删除了 Swift Alamofire“+”号
问题描述
我们遇到了这个奇怪的问题。一旦我们发送我们的请求,“+”就会在数据库中删除。
但是如果我打印response.data
,我可以看到“+”在那里(使用 Alamofire 4.9.1)
删除“+”的可能原因是什么?
解决方案
为了未来的读者,application/x-www-form-urlencoded
请求必须是“百分比编码”,将+
字符替换为%2B
. 但实际上有很多字符可能需要编码,所以通常最好使用 Alamofirerequest
方法Parameters
,它会为您处理所有这些细节。例如在 Alamofire 4.9.1 中:
let headers: HTTPHeaders = [
"Authorization": authorization
]
let parameters: Parameters = [
"grant_type": "password",
"username": username,
"password": password
]
Alamofire.request(url, method: .post, parameters: parameters, headers: headers).responseJSON { response in
switch response.result {
case .failure(let error): print(error)
case .success(let value): print(value)
}
}
或者在 Alamofire 5 及更高版本中,可以使用AF
而不是Alamofire
:
AF.request(url, method: .post, parameters: parameters, headers: headers).responseJSON { response in
switch response.result {
case .failure(let error): print(error)
case .success(let value): print(value)
}
}
请参阅 Alamofire 使用文档:带有 URL 编码参数的 POST 请求
如果您真的想自己构建httpBody
,URLRequest
而不仅仅是对+
字符进行百分比编码,您可以考虑更通用的百分比编码例程,如JSON 请求发送空数据中所示。这个想法与 Alamofire 的相同Parameters
,即httpBody
从字典构建。
推荐阅读
- python - 通过python中的多个图连续着色
- apostrophe-cms - 如何使用撇号工作流在 nunjucks 文件中获取撇号中的当前语言环境
- database - 如何使用 Orca 将 DolphinDB 的 DFS 表加载到 Python 客户端?
- flutter - setState 依赖于另一个类的值
- python - 在彩色框中裁剪图像
- powershell - Powershell - 从集合中删除重复项
- excel - 如何通过 PowerShell 脚本将现有 csv 文件添加为现有 excel 工作簿中的新工作表
- react-native - 如何在 react-native 中禁用某些页面中的后退按钮?
- javascript - 如何从 JavaScript 中的数组创建 JSON 文件?
- ios - 在 Swift4 中将字典与值合并为数组