如何在 Alamofire 4 和 Swift 3 中设置方法、标题、参数

Posted

技术标签:

【中文标题】如何在 Alamofire 4 和 Swift 3 中设置方法、标题、参数【英文标题】:How to set method, header, parameter in Alamofire 4 and Swift 3 【发布时间】:2016-10-05 14:44:25 【问题描述】:

在过去的Alamofire 版本中,对于发送方法、标头和参数,我曾经这样做过:

Alamofire.request(.GET, URLRequest, headers:headers, parameters: parameters)

但是版本 4 和 swift 3 是不同的。 如何设置方法、发送标头和参数?

【问题讨论】:

【参考方案1】:

Alamofire github 的迁移指南很好地解释了这一点。

看这里:

// Alamofire 3
let parameters: [String: AnyObject] = ["foo": "bar"]

Alamofire.request(.GET, urlString, parameters: parameters, encoding: .JSON)
.progress  bytesRead, totalBytesRead, totalBytesExpectedToRead in
    print("Bytes: \(bytesRead), Total Bytes: \(totalBytesRead), Total     Bytes Expected: \(totalBytesExpectedToRead)")

.validate  request, response in
    // Custom evaluation closure (no access to server data)
    return .success

.responseJSON  response in
    debugPrint(response)


// Alamofire 4
let parameters: Parameters = ["foo": "bar"]

Alamofire.request(urlString, method: .get, parameters: parameters, encoding: JSONEncoding.default)
.downloadProgress(queue: DispatchQueue.utility)  progress in
    print("Progress: \(progress.fractionCompleted)")

.validate  request, response, data in
    // Custom evaluation closure now includes data (allows you to parse data to dig out error messages if necessary)
    return .success

.responseJSON  response in
    debugPrint(response)

【讨论】:

【参考方案2】:

迁移指南解释的很好,但是示例中没有标头,为了避免混淆,下面我添加一个GET请求的示例来添加它们。

Alamofire.request(URL, method: .get, parameters: parameters, headers: headers)
    .validate  request, response, data in
        return .success
    
    .responseJSON  response in
        switch response.result 
        case .success:
            // do something
            break
        case .failure(let error):
            // handle error
            break
        
    

我在here 中找到了此信息,因此,如果您有与请求中的标头相关的问题,请前往那里查看。

【讨论】:

以上是关于如何在 Alamofire 4 和 Swift 3 中设置方法、标题、参数的主要内容,如果未能解决你的问题,请参考以下文章

Alamofire 4 请求返回 NSArray,无法弄清楚如何在 Swift 3 中使用 SwiftyJSON 进行解析

如何使用参数 swift 3.0 Alamofire 4.0 调用邮政服务?

使用 Swift 3 和 Alamofire 4 后没有得到响应

Swift 3 的 ObjectMapper 和 Alamofire 问题 Alamofire 4 的 Alamofire 版本

Alamofire 4、Swift 3:无法返回 StatusCode

如何在 Swift 4 中通过 SwiftyJson 和 Alamofire 创建多个按钮?