2017-06-26 15 views
1

UTF8でエンコードされたJSON本体をREST APIに送信したいとします。私のコードは今Alamofire POSTリクエストボディのUTF8エンコーディングを設定するには?

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エンコードされていないで送信されたということです。 Alamofireのリクエストで「JSONEncoding.encode( "UTF8")」のようなものを設定する方法のアイデアはありますか?

答えて

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: [:]) 
を試してみてください
関連する問題