菜鸟教程小白 发表于 2022-12-11 17:11:04

ios - Alamofire:有没有办法在失败的情况下获取响应数据?


                                            <p><p>在 <code>Alamofire</code> 中调用 <code>.validate()</code> 进行自动验证并将状态码 <code>200...299</code> 传递为成功。 </p>

<p>如果 API 请求失败,服务器会发送状态码 <code>400</code> 和一些内部错误消息和 JSON 中的代码,以识别这是哪种错误。在以下示例中,如果状态代码是 <code>400</code> 在 <code>case .Failure</code> 下,我找不到获取此 JSON 数据的方法:</p>

<pre><code>Alamofire.request(.GET, &#34;https://httpbin.org/get&#34;, parameters: [&#34;foo&#34;: &#34;bar&#34;])
         .validate()
         .responseJSON { response in
             switch response.result {
             case .Success:
               print(&#34;Validation Successful&#34;)
             case .Failure(let error):
               print(error)
             }
         }
</code></pre>

<p><code>error</code> 不包含响应数据。有什么办法得到吗?</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>如果有错误从服务器返回的json数据,你应该可以从响应对象中获取它,比如:</p>

<pre><code>print(response.result)   // result of response serialization

if let JSON = response.result.value {
    print(&#34;JSON: \(JSON)&#34;)
}
</code></pre>

<p>你也可以继承 Alamofire 返回的 ErrorType 对象:</p>

<pre><code>public enum BackendError: ErrorType {
    case Network(error: NSError)
    case DataSerialization(reason: String)
    case JSONSerialization(error: NSError)
    case ObjectSerialization(reason: String)
    case XMLSerialization(error: NSError)
}
</code></pre>

<p>如果您不想构造自定义错误对象以返回,这将为您提供有关错误的更多信息。更多信息来自 Alamofire 文档:<a href="https://github.com/Alamofire/Alamofire#handling-errors" rel="noreferrer noopener nofollow">https://github.com/Alamofire/Alamofire#handling-errors</a> </p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - Alamofire:有没有办法在失败的情况下获取响应数据?,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/38772821/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/38772821/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - Alamofire:有没有办法在失败的情况下获取响应数据?