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

开发环境

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值