如何为Alamofire POST请求体设置UTF8编码?

时间:2017-06-26 14:31:15

标签: ios encoding utf-8 alamofire

我想将UTF8编码的JSON主体发送到我的REST API。我的代码现在是

var body : [String:Any]? = ["version":Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String ?? ""];
.
.
body?["type"] = type
var url : String = UserDefaults.standard.value(forKey:"url") as! String
url.append("MobileLogin")
Alamofire.request(url, method: .post, parameters:body, encoding: JSONEncoding.default, headers: nil).responseJSON { (responseData) in
    if((responseData.result.value) != nil) {
    .
    .
    }
}

问题是发送的JSON不是UTF8编码的。知道如何设置类似" JSONEncoding.encode(" UTF8")"在Alamofire请求?

1 个答案:

答案 0 :(得分:5)

试试这个

let options = NSJSONWritingOptions()
    let data = try NSJSONSerialization.dataWithJSONObject(parameters!, options: options)

    mutableURLRequest.setValue("application/json", forHTTPHeaderField: "Content-Type")
    mutableURLRequest.HTTPBody = data

或其他方式

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(url, method: .post, parameters: [:], encoding: "myBody", headers: [:])