使用Alamofire进行XML参数的POST请求

来源:互联网 发布:java集合常用的方法 编辑:程序博客网 时间:2024/05/21 13:28

开发环境

  • 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的编码自己改的。

0 0
原创粉丝点击