如何使用 Alamofire 读取错误请求的 json 数据(状态码 400)

Posted

技术标签:

【中文标题】如何使用 Alamofire 读取错误请求的 json 数据(状态码 400)【英文标题】:How to read json data of a bad request (status code 400) using Alamofire 【发布时间】:2016-03-29 03:26:31 【问题描述】:

我正在从终端本地调用 Rest API。如下所示:

http -v -f --timeout=60 GET 'http://localhost:8080/api/v1/public/users/signin?email=myemail@email.com&password=mypassword'

它正在返回以下输出:

GET /api/v1/public/users/signin?email=myemail@email.com&password=mypassword HTTP/1.1
Accept: */*
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded; charset=utf-8
Host: localhost:8080
User-Agent: HTTPie/0.8.0



HTTP/1.1 400 Bad Request
Content-Type: application/json
Date: Mon, 28 Mar 2016 16:59:08 GMT
Set-Cookie: rememberMe=deleteMe; Path=/; Max-Age=0; Expires=Sun, 27-    Mar-2016 16:59:13 GMT
Transfer-Encoding: chunked


    "debugMessage": "Submitted credentials for token     [org.apache.shiro.authc.UsernamePasswordToken - najmul@qianalysis.com, rememberMe=true] did not match the expected credentials.Submitted credentials for token [org.apache.shiro.authc.UsernamePasswordToken - najmul@qianalysis.com, rememberMe=true] did not match the expected credentials.: The subject was expected to be true, but was false",
    "errorCode": "INCORRECT_CREDENTIALS",
    "logId": "50a695c1a81e0542",
    "stackTrace": "org.niopack.r.....

现在我想使用 Alamofire 读取这个 JSON 数据。我尝试使用以下方式使用 responseJSON 序列化器:

Alamofire.request(method, urlString, parameters: parameters, encoding: .URL, headers: cookieHeader)
    .validate()
    .responseJSON 

        alamofireResponse in

        let jsonData = alamofireResponse.result.value
    

但是我得到的 jsonData 为零。如果你在这里,你会做什么?

谢谢。

【问题讨论】:

【参考方案1】:

对我来说,删除 validate() 让我看到了请求失败的原因。由于某种原因validate失败时,响应的数据没有被解析。

【讨论】:

截至 2021 年 4 月仍然如此

以上是关于如何使用 Alamofire 读取错误请求的 json 数据(状态码 400)的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Swift 中使用 Alamofire 读取本地 JSON

Alamofire发布请求错误调用中的额外参数“方法”

如何在 Alamofire 请求 swift 3 上发出警报

如何在 swift 中在 alamofire 中打印错误 html?

使用 alamofire JSON 请求出现错误的请求错误

如何在 Alamofire 中请求带有正文和标头的 JSON?