首页 > 解决方案 > Alamofire 使用数据设置请求正文

问题描述

在 objC 我做:

NSData *postData = ...
NSMutableURLRequest *request = ...
[request setHTTPBody:postData];

如何在 Swift Alamofire 中进行操作?

Alamofire.request(url, method: .post, parameters: nil, encoding: URLEncoding.default, headers: headers)
    request.validate().responseJSON {
...
}

标签: swiftnetworkingalamofire

解决方案


Alamfire 接受[String:Any]

 do {
     let params  = try JSONSerialization.jsonObject(with: data, options: []) as! [String:Any]
     Alamofire.request(url, method: .post, parameters:params, encoding: JSONEncoding.default, headers: headers)
    request.validate().responseJSON {
     ...
    }
  } 
  catch {
      print(error)
  }

斯威夫特 4.2

Alamofire.request(url, method: .post, parameters: [:], encoding: "test", headers: [:])  

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
    }

}

推荐阅读