Alamofire具有自定义参数编码的swift应用程序

时间:2014-10-31 23:09:27

标签: swift alamofire

我必须在我的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)
    }

1 个答案:

答案 0 :(得分:4)

custom闭包不是由设计执行的,因为没有要编码的参数。他是从Alamofire.swift source file获取的代码摘录:

if parameters == nil {
    return (URLRequest.URLRequest, nil)
}

正如您所看到的,您可以通过传递一个空字典来禁止这种情况:

Alamofire.request(.POST, WebServiceURLString, parameters: Dictionary(), encoding: .Custom(custom))

现在将执行custom关闭。