如何在响应闭包中访问 Alamofire 请求参数?

Posted

技术标签:

【中文标题】如何在响应闭包中访问 Alamofire 请求参数?【英文标题】:How to access Alamofire request parameters inside response closure? 【发布时间】:2015-10-23 17:06:57 【问题描述】:

我正在做一个使用 Swift 2.0 和 Alamofire 3 的小项目。 我需要发送到服务器的参数很少。

var myParameters = [
            "myObjectName":"FooBar",
            "myObjectId":123456
        ]

要发送数据,我有一个用 Alamofire 编写的基本请求

let myRequest = Alamofire.request(.POST, MY_SERVICE_URL, parameters: myParameters as! [String : AnyObject], encoding: .JSON)

我收到这样的回复:

            myRequest.response  myRequest, myResponse, myData, myError in

            /*
            Here I would like to access myParameters, simply to double-check the ID of the data that I have sent out with myRequest.
            */
            print("I'm Done with sending Object number \(myObjectId).")
        

是否有任何简单的方法可以将 myObjectId 传递给响应闭包?还是以其他方式访问它?

【问题讨论】:

【参考方案1】:

您可以像这样检索参数:

let request = Alamofire.request(.POST, "", parameters: parameters, encoding: .JSON, headers: nil)

request.response  (request, response, data, error) -> Void in
    guard let httpBody = request?.HTTPBody else  return 
    do 
        if let jsonParams = try NSJSONSerialization.JSONObjectWithData(httpBody, options: []) as? [String: AnyObject] 
            if let objectId = jsonParams["myObjectId"] 
                print(objectId)
            
        
     catch 
        print(error)
    

【讨论】:

以上是关于如何在响应闭包中访问 Alamofire 请求参数?的主要内容,如果未能解决你的问题,请参考以下文章

如何编写返回响应的alamofire请求函数?

如何显示来自 Alamofire 请求的 JSON 数组响应的某些部分

如何检查网络响应来自 Alamofire 请求中的缓存或服务器?

您如何访问 Alamofire 5 didCompleteTaskNotification 通知中的响应数据?

如何使用 alamofire 和数组形式的参数上传图像

在 Swift 中使用 JSON 的 Alamofire 请求后,如何在 AnyObject 中转换 <AnyObject> 响应?