我必须在我的swift应用程序中调用soap web服务中的一些方法,所以我认为我应该使用自定义参数编码,但是当我为这个编码创建闭包时,它似乎永远不会被调用。我做错了吗?
这是我的代码:
let custom: (URLRequestConvertible, [String: AnyObject]?) -> (NSURLRequest, NSError?) = {
(URLRequest, parameters) in
let mutableURLRequest = URLRequest.URLRequest.mutableCopy() as NSMutableURLRequest
mutableURLRequest.setValue("text/xml; charset=utf-8", forHTTPHeaderField: "Content-Type")
mutableURLRequest.HTTPBody = body
return (mutableURLRequest, nil)
}
Alamofire.request(.POST, WebServiceURLString, parameters: nil, encoding: .Custom(custom)).responseString { (request, response, data, error) -> Void in
println(data)
}
答案 0 :(得分:4)
custom
闭包不是由设计执行的,因为没有要编码的参数。他是从Alamofire.swift source file获取的代码摘录:
if parameters == nil {
return (URLRequest.URLRequest, nil)
}
正如您所看到的,您可以通过传递一个空字典来禁止这种情况:
Alamofire.request(.POST, WebServiceURLString, parameters: Dictionary(), encoding: .Custom(custom))
现在将执行custom
关闭。