定制的Creditcard到期日期字段

时间:2017-03-03 09:15:47

标签: swift alamofire

我正在尝试使用Alamofire 4.0和Swift 3.0发出POST API请求,但我现在遇到了困难。

我的邮差看起来像这样:

enter image description here

使用Basic Auth

enter image description here

我现在甚至无法编译代码,我也不知道为什么。这是我的功能:

func testCall(token:String, completionHandler: @escaping ((AnyObject?, Error?) -> Void)) {
    let urlString = Constant.apiUrlString + Constant.apiPostOrderCard
    print(urlString)

    let parameters = ["test" : "test"]
    Alamofire.request(urlString, method: .post, parameters: parameters, encoding: .JSON, headers: self.header).validate().responseJSON { (request, response, result) -> Void in
        switch result {
        case .Success(let value):
            print(value)
            completionHandler(value, nil);
            break
        case .Failure(let data, let error):
            self.handleFailure(data, error: error, response: response, completionHandler: completionHandler)
            break
        }
    }

我做错了什么?

enter image description here

2 个答案:

答案 0 :(得分:0)

你刚刚迁移到Alamofire 4吗?有几种语法更改,您需要在版本更新时阅读迁移指南。

这是更新的代码:)

func testCall(token:String, completionHandler: @escaping ((AnyObject?, Error?) -> Void)) {
    let urlString =  Constant.apiUrlString + Constant.apiPostOrderCard

    let parameters : Parameters = ["test": "test"]

    Alamofire.request(urlString, method: .post, parameters: parameters).validate().responseJSON { response in

        if let status = response.response?.statusCode {
            switch(status){
            case 200:
                if let result = response.result.value {
                    let JSON = result as! NSDictionary

                    // implement your logic here    
                    completionHandler(value, nil);
                }
                break
            case 400:
                   // implement your logic here 
                self.handleFailure(data, error: error, response: response, completionHandler: completionHandler)
                break
            default:
                break
            }
        }
    }
}

Parameters是Alamofire的对象,随意使用它,构造函数也改变了。

答案 1 :(得分:0)

只需将encoding: .JSON替换为encoding: JSONEncoding.default,并确保parameters的类型为Parameters

Alamofire.request(urlString, method: .post, parameters: parameters, encoding: JSONEncoding.default, headers: self.header).validate().responseJSON { response in
        switch response.result {
        case .success(let json): //do something
        case .failure(let error): // do something

        }
    }