You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Alamofire调用API时出现ResponseSerializationFailed错误求助

解决Alamofire ResponseSerializationFailed错误的实用思路

我之前帮朋友排查过一模一样的问题——Postman里API跑的顺风顺水,换成Alamofire就报序列化失败,大概率是请求格式、参数编码或者响应解析的细节没和Postman对齐,给你梳理下最常见的排查方向:

1. 先把请求编码改成JSON格式(最容易踩的坑)

Alamofire默认会用URLEncoding处理参数,也就是把参数拼在URL或者form-data里,但Postman里你肯定是选了application/json格式发送请求的,这两者完全不兼容!

你需要在请求里明确指定JSONEncoding.default,它会自动帮你设置正确的Content-Type: application/json头,代码改成这样:

AF.request(self.url, method: .post, parameters: parameters, encoding: JSONEncoding.default)
    .validate()
    .responseJSON { response in
        switch response.result {
        case .success(let value):
            print("请求成功:\(value)")
        case .failure(let error):
            print("错误详情:\(error)")
        }
    }

2. 检查Base64图片的编码选项

你用了.lineLength64Characters来生成base64字符串,这个选项会给字符串自动加换行符,很多服务器对带换行的base64解析有问题,而Postman里的base64是没有换行的,这就是差异所在!

把编码选项改成空数组试试,去掉换行:

let strBase64: String = imageData.base64EncodedString(options: [])

如果服务器有特定的换行要求,再调整,但先试试这个,大概率能解决图片解析的问题,服务器不会因为图片格式错误返回非JSON响应了。

3. 看看服务器到底返回了什么

有时候序列化失败不是请求的问题,是服务器返回的响应格式不符合Alamofire的预期——比如服务器返回的是text/html格式的错误页面,但内容是JSON,Alamofire默认只认application/json的响应,就会报错。

你可以先把响应转成字符串看看实际内容:

AF.request(self.url, method: .post, parameters: parameters, encoding: JSONEncoding.default)
    .responseString { response in
        print("服务器返回的原始内容:\(response.result)")
    }

如果打印出来确实是JSON字符串,只是Content-Type不对,那可以让Alamofire接受这个类型:

let jsonDecoder = JSONDecoder()
let customSerializer = DataRequest.jsonResponseDecoder(decoder: jsonDecoder)
// 把服务器返回的Content-Type加进去,比如"text/plain"
customSerializer.acceptableContentTypes?.insert("text/plain")

AF.request(self.url, method: .post, parameters: parameters, encoding: JSONEncoding.default)
    .response(responseSerializer: customSerializer) { response in
        // 处理你的响应
    }

4. 核对参数的完整性和正确性

你的代码里parameters里的qrCodeImage...看起来没写完,一定要确保参数的键名(比如qrCodeImage)和Postman里完全一致,拼写不能错;同时确认carIdentifier和base64字符串的取值都正确,没有空值或者格式错误。

按这个顺序排查,应该很快就能定位到问题啦!

内容的提问来源于stack exchange,提问作者Fakhar Zaman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:31:57