4

我必须在我的 swift 应用程序中从肥皂网络服务调用一些方法,所以我认为我应该使用自定义参数编码,但是当我为这种编码创建闭包时,它似乎永远不会被调用。难道我做错了什么?

这是我的代码:

    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)
    }
4

1 回答 1

4

闭包不是按设计执行的custom,因为没有要编码的参数。他是从Alamofire.swift 源文件中摘录的代码:

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

如您所见,您可以通过传递一个空字典来绕过此条件:

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

现在将custom执行关闭。

于 2014-12-29T12:05:26.873 回答