Alamofire 4 Swift 3 ParameterEncoding Custom [英] Alamofire 4 Swift 3 ParameterEncoding Custom
本文介绍了Alamofire 4 Swift 3 ParameterEncoding Custom的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我将我的项目更新为Swift 3和Alamofire 4.我使用的是自定义编码,但它已改为其他编码方法。我无法找到替代/等同于此:
I updated my project to Swift 3 and Alamofire 4. I was using custom Encoding, but it's changed to other encoding methods. I am not able to find the alternative/equivalent to this:
alamoFire.request(urlString, method: HTTPMethod.post, parameters: [:], encoding: .Custom({
(convertible, params) in
let mutableRequest = convertible.URLRequest.copy() as! NSMutableURLRequest
let data = (body as NSString).data(using: String.Encoding.utf8)
mutableRequest.httpBody = data
return (mutableRequest, nil)
}), headers: headers()).responseJSON { (responseObject) -> Void in
switch responseObject.result {
case .success(let JSON):
success(responseObject: JSON)
case .failure(let error):
failure(error: responseObject)
}
}
<我也尝试过制作URLRequest对象和简单请求它也给我错误
I also tried by making URLRequest object and simple request its also giving me errors
var request = URLRequest(url: URL(string: urlString)!)
let data = (body as NSString).data(using: String.Encoding.utf8.rawValue)
request.httpBody = data
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers()
alamoFire.request(request).responseJSON { (responseObject) -> Void in
switch responseObject.result {
case .success(let JSON):
success(JSON)
case .failure(let error):
failure(responseObject, error)
}
}
请指点我的方向,如何将httpbody与Alamofire 4连接
Do point me in some direction, how to attach httpbody with the Alamofire 4
推荐答案
在Alamofire 4.0中你应该使用 ParameterEncoding
协议。这是一个例子,它使任何字符串
UTF8
可编码。
In Alamofire 4.0 you should use ParameterEncoding
protocol. Here is an example, which makes any String
UTF8
encodable.
extension String: ParameterEncoding {
public func encode(_ urlRequest: URLRequestConvertible, with parameters: Parameters?) throws -> URLRequest {
var request = try urlRequest.asURLRequest()
request.httpBody = data(using: .utf8, allowLossyConversion: false)
return request
}
}
Alamofire.request("http://mywebsite.com/post-request", method: .post, parameters: [:], encoding: "myBody", headers: [:])
这篇关于Alamofire 4 Swift 3 ParameterEncoding Custom的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文