Swift Alamofire请求链接-无法调用非函数类型的值';httpurresponse';

Swift Alamofire请求链接-无法调用非函数类型的值';httpurresponse';,swift,alamofire,swift4,Swift,Alamofire,Swift4,一个新来的敏捷的家伙。我正试图找出如何将多个Alamofire调用链接在一起 我需要 从服务器1获取身份验证令牌 从服务器1获取一些数据(需要身份验证令牌) 从服务器2获取身份验证令牌 根据步骤2中的值从服务器2获取更多数据 我在这篇文章中尝试了以下例子: 不幸的是,这些示例中没有一个适用于Swift 4 我决定选择第二种方式,但还是要坚持下去 无法调用非函数类型“HTTPURLResponse?”的值 putRequest和getRequest行都有错误。我不知道这意味着什么,也不知道如何修

一个新来的敏捷的家伙。我正试图找出如何将多个Alamofire调用链接在一起

我需要

  • 从服务器1获取身份验证令牌
  • 从服务器1获取一些数据(需要身份验证令牌)
  • 从服务器2获取身份验证令牌
  • 根据步骤2中的值从服务器2获取更多数据 我在这篇文章中尝试了以下例子:

    不幸的是,这些示例中没有一个适用于Swift 4

    我决定选择第二种方式,但还是要坚持下去

    无法调用非函数类型“
    HTTPURLResponse?”的值

    putRequest
    getRequest
    行都有错误。我不知道这意味着什么,也不知道如何修复它

    我当前的代码:

    import UIKit
    import PromiseKit
    import Alamofire
    import SwiftyJSON
    
    class ViewController: UIViewController {
    
        let URL = "http://httpbin.org/"
    
        override func viewDidLoad() {
            super.viewDidLoad()
            // Do any additional setup after loading the view, typically from a nib.
        }
    
        override func didReceiveMemoryWarning() {
            super.didReceiveMemoryWarning()
            // Dispose of any resources that can be recreated.
        }
    
        func runPutRequest() {
    
            let putRequest = Alamofire.request("\(URL)/get")
    
            putRequest.response { [weak self] putRequest, putResponse, putData, putError in
                if let strongSelf = self {
                    // Probably store some data
                    strongSelf.runGetRequest()
                }
            }
        }
    
        func runGetRequest() {
    
            let getRequest = Alamofire.request("\(URL)/get", method: .get)
    
            getRequest.response { [weak self] getRequest, getResponse, getData, getError in
                if let strongSelf = self {
                    // Probably store more data
                    strongSelf.processResponse()
                }
            }
        }
    
        func processResponse() {
            // Process that data
        }
    
        func reloadData() {
            // Reload that data
        }
    }
    

    任何帮助都将不胜感激。

    对于
    response
    闭包,您的返回参数太多了,实际上只需要一个
    DataResponse
    参数。此代码适用于我:

    func runPutRequest() {
        let putRequest = Alamofire.request("\(URL)/get", method: .put)
        putRequest.response { [weak self] response in
            if let strongSelf = self {
                // Probably store some data
                strongSelf.runGetRequest()
            }
        }
    }
    
    func runGetRequest() {
        let getRequest = Alamofire.request("\(URL)/get", method: .get)
        getRequest.response { [weak self] response in
            if let strongSelf = self {
                // Probably store more data
                strongSelf.processResponse()
            }
        }
    }