【问题标题】:How can I retrieve the status message of a request made with Alamofire?如何检索使用 Alamofire 发出的请求的状态消息?
【发布时间】:2015-07-19 23:28:37
【问题描述】:

我使用的服务器在 HTTP 状态消息中返回错误消息。例如,它将返回“400 用户已存在”而不是“400 错误请求”。

我想在 Alamofire 调用的响应方法中访问字符串“用户已存在”。但是,我找不到任何方法来访问此字符串。

我已经在 StackOverflow 上发现了这个问题:Swift Alamofire: How to get the HTTP response status code

很遗憾,没有人回答这个问题。 :(

这是 Chrome 显示错误所在的位置:

【问题讨论】:

  • 您可以在 Alamofire 回调中使用响应对象的 statusCode 属性访问 HTTP 响应代码本身。这是Int,而不是String。如果您确定错误字符串正在被发回,那么我建议使用POSTman 之类的东西来检查标题和正文以找出位置。这将帮助您了解如何访问它。
  • @matthew.healy:我上传了一张图片,显示了 Chrome 中的状态消息。我不相信这是标题或正文的一部分,尽管我肯定是错的。
  • 啊,很奇怪。不确定我能做多少真正的帮助。似乎您可以从响应中获得的唯一内容是(整数)statusCode 和标题字典。 (见this link
  • 我也有同样的要求。你找到答案了吗?
  • @Oshadha 是的,虽然你不会喜欢它。我了解到 HTTP 状态消息应该仅用于调试,而不是用于应用程序逻辑。任何有意义的数据都应通过标头或正文发送。因此,您永远不需要获取状态消息,如果您确实需要它,您应该更改您的服务器。 (再一次,我说你不会喜欢我的回答!:P)

标签: swift alamofire


【解决方案1】:

我建议尝试打印出您提供的所有可能的数据字段,然后看看您能找到什么。请尝试以下示例,看看是否有任何启发。

let URL = NSURL(string: "your/url/to/somewhere")!
let parameters = ["foo": "bar"]

Alamofire.request(.POST, URL, parameters: parameters)
    .response { request, response, data, error in
        println("Request: \(request)")
        println("Response: \(response)")
        println("Error: \(error)")

        if let data = data as? NSData {
            println("Data: \(NSString(data: data, encoding: NSUTF8StringEncoding)!)")
        }
}

【讨论】:

    【解决方案2】:

    从服务器返回 json 格式的响应,然后我认为您将能够获得适当的状态。

    我已经使用 php codeigniter..from 实现了那个东西,我的响应就像

     $response['status'] = 'user_already_exists'; 
     $this->response($response, 400);
    

    现在你可以快速使用这个

    Alamofire.request(.POST,URL, parameters:parameters) .responseJSON
    {
                (request, response, data, error) in
    
                var json = JSON(data!) //I've used swiftyJSON for reading json response
                let status = json["status"].stringValue
                println("Status : \(status)")
    }
    

    希望对您有所帮助。

    【讨论】:

    • 很遗憾,我不拥有服务器。
    • @thedayturns 好的..我只得到状态码 400 而不是使用 alamofire 的消息。你能得到像“400个用户已经存在”这样的整个状态吗?
    • 没有。这就是我所要求的。
    猜你喜欢
    • 1970-01-01
    • 2015-03-14
    • 2017-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多