Alamofire 发布请求未执行

Posted

技术标签:

【中文标题】Alamofire 发布请求未执行【英文标题】:Alamofire Post Request is not Executed 【发布时间】:2017-07-20 12:31:44 【问题描述】:

我正在向我的 API 发出 POST 请求。突然之间,请求被跳过了。我已经尝试调试它,但直到现在都没有成功。

这是我的要求:

@IBAction func checkLogin(_ sender: Any) 
    guard let managedContext = self.managedObjectContext else  return 

    let user = NSEntityDescription.insertNewObject(forEntityName: User.identifier, into: managedContext) as! User

    let url = ""

    let parameters: Parameters =
        ["username" : usernameTextField.text!, "password" : passwordTextField.text!]


     Alamofire.request(url, method: .post, parameters: parameters, encoding: URLEncoding.default).responseJSON  (responseData) -> Void in

        let results = JSON(responseData.result.value!)
        print(results)

        user.firstName = results["firstname"].string!

        let responseString : String = responseData.response?.allHeaderFields["Set-Cookie"] as! String

        if let range = responseString.range(of: ";")
            let startIndex = (responseString.range(of: "="))

            let cookie = responseString[(startIndex?.upperBound)!...range.lowerBound]
            user.setValue(cookie, forKey: "token")

        
      do 
        try self.dataController.saveContext()
    catch 
        print("Save Error User")
    

我正在使用 Alamofire 4.5 和 Swift 3.1。

【问题讨论】:

您是否在Alamofire 闭包内添加了断点?请求是异步的,因此如果您只是单步执行代码,它可能不会被调用。 另外,你的url 是空白的,是为了这个例子吗? @Ollie 的 URL 是空白的 :) 是的,我添加了一堆断点。调用请求后,调试器直接跳到最后。 如果您的网址为空,那么 Alamofire 将如何回复您? @devangbhatt 空白网址仅用于场景描述。在“工作”示例中,Url 已填充 【参考方案1】:

请使用不同类型的数据请求处理块并再次检查。

Alamofire.request(url, method: .post, parameters: parameters, encoding: URLEncoding.default)

.responseJSON  response in
    print("JSON Response")

.responseData  response in
    print("Data Response")              

.responseString  response in
    print("String Response")

.responsePropertyList  response in
    print("PropertyList Response")

【讨论】:

以上是关于Alamofire 发布请求未执行的主要内容,如果未能解决你的问题,请参考以下文章

关闭时未调用 Alamofire 请求

Alamofire 网络活动指示器未显示

var 请求:Alamofire.Request?使用未声明类型的 Alamofire

Alamofire 会话配置未反映在请求中

AlamoFire GET api 请求未按预期工作

Alamofire JSON 请求未从服务器中提取数据