首页 > 解决方案 > 失败:responseSerializationFailed(原因:Alamofire.AFError.ResponseSerializationFailureReason.inputDataNilOrZeroLength)

问题描述

我正在尝试使用 Alamofire 读取 JSON。这是我的代码:

    let headers = ["Content-Type": "application/json"]

    func getConfirmationCode(params: [String:Any], block: @escaping(_ data : JSON, _ success : Bool) -> Void) {
    if let url = URL(string: baseURL + "getConfirmationCode.php") {
        Alamofire.request(url, method: .post, parameters: params, encoding: JSONEncoding.default, headers: headers).responseJSON { (response) in
            DispatchQueue.main.async {
                if let value = response.result.value {
                    let json = JSON(value)
                    block(json, true)
                } else {
                    block(JSON.null, false)
                }
            }
        }
    }
}

JSON 是有效的,在 Postman 中一切正常,但我无法使其正常工作。网络上的建议都没有帮助(将 responseJSON 更改为 responseString/responseData,将 JSONEncoding.default 更改为 URLEncoding.default 等)

谁能帮我?

标签: iosjsonswiftalamofire

解决方案


您应该尝试在响应部分的“预览”选项卡中检查邮递员的响应。有时它会在“漂亮”部分显示正确的 json。但在“预览”部分,它很多包含一些 API 响应的打印语句。并且这些打印语句在 json 解码中产生问题。

在此处输入图像描述

此外,如果您想获得邮递员响应的快速代码,您可以随时从邮递员的代码功能中获取它:

在此处输入图像描述

在此处输入图像描述

希望这可以帮助..!


推荐阅读