开发环境
- Xcode8
- swift 3.0
- Alamofire 4.0.1
我的方法
1. 自定义xml参数编码
struct CustomXMLEncoding:ParameterEncoding {
func encode(_ urlRequest: URLRequestConvertible, with parameters: Parameters?) throws -> URLRequest {
var urlRequest = try urlRequest.asURLRequest()
guard let parameters = parameters else { return urlRequest }
let xmlString = parameters["customXMLString"] as! String
let data = xmlString.data(using: String.Encoding.utf8)
if urlRequest.value(forHTTPHeaderField: "Content-Type") == nil {
urlRequest.setValue("application/xml", forHTTPHeaderField: "Content-Type")
}
urlRequest.httpBody = data
return urlRequest
}
}
2.调用Alamofire
Alamofire.request(url, method: .post, parameters: ["customXMLString":"<real val='12.2' />"], encoding: CustomXMLEncoding(), headers: headers).responseData(completionHandler: { (response) in
if let data = response.data {
// AEXML
do {
let xmlDoc = try AEXMLDocument(xml: data)
print(xmlDoc.xml)
} catch {
print("\(error)")
}
}
})
上面的自定义编码部分代码是我参照Alamofire源码中json的编码自己改的。