4

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)
    }
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 に答える