如何使用 Alamofire 发送带有压缩内容的 HTTP POST 请求?
Posted
技术标签:
【中文标题】如何使用 Alamofire 发送带有压缩内容的 HTTP POST 请求?【英文标题】:How to send HTTP POST request with gziped content with Alamofire? 【发布时间】:2017-03-28 06:41:40 【问题描述】:我正在开发一个 ios 应用程序,将大约 2000 个对象数组发布到服务器。我在做一个实验。我用过
let param: [String: AnyObject] = [
"OwnerEmail": document.fromOwner!.email as AnyObject,
"UTCTimeStamp": document.utcTimeStamp as AnyObject,
"Latitude": document.latitude as AnyObject,
"Longitude": document.longitude as AnyObject,
...
]
customAlamofireManager.request(<ServerURL>,
method: .post,
parameters: param,
encoding: JSONEncoding.default,
headers: headers)
发布 1 个对象。但是现在我要发布 2000 或更多,我正在考虑使用 gzip 压缩对象数组,然后上传以检查网络效率。但我不知道如何使用 Alamofire 做到这一点。 我找到了这个link。
但是 Alamofire 现在在最新版本中没有枚举 ParameterEncoding。其他一些链接建议使用 Alamofire.upload。 任何帮助表示赞赏。
【问题讨论】:
【参考方案1】:您可以使用以下代码通过 Alamofire SDK 传递 POST 请求的参数:
let param: [String: AnyObject] = [
"OwnerEmail": document.fromOwner!.email as AnyObject,
"UTCTimeStamp": document.utcTimeStamp as AnyObject,
"Latitude": document.latitude as AnyObject,
"Longitude": document.longitude as AnyObject,
...
]
var request = URLRequest(url: URL(string: url)!)
request.httpMethod = "POST"
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
do
let data = try JSONSerialization.data(withJSONObject: param, options: .prettyPrinted)
request.httpBody = data
Alamofire.request(request).responseJSON (response) in
print(response)
catch
这将帮助您解决上述问题。
【讨论】:
我有大约几千个这样的参数,想先压缩它,然后再发布。我只能成功发布 1 个参数。谢谢。以上是关于如何使用 Alamofire 发送带有压缩内容的 HTTP POST 请求?的主要内容,如果未能解决你的问题,请参考以下文章
在 Swift 中使用 Alamofire 网络进行解析时,如何在请求中发送内容类型?
如何在 Swift 中使用 Alamofire 上传带有 JSON 参数的图像?