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

使用Alamofire发起JSON POST请求返回400 Bad Request错误如何解决

问题原因及解决方案

核心错误:参数编码方式不匹配

你在请求头明确声明了Content-Type: application/json,且给出的curl示例也是传递JSON格式的请求体,但Alamofire代码中使用了URLEncoding编码参数,会把参数转换为表单拼接格式(如registrationNumber=xxx),服务端按照JSON规则解析请求体时无法正确读取车牌字段,因此返回格式错误。

修正方法

将请求的编码方式从URLEncoding替换为JSONEncoding即可,修正后的完整代码如下:

guard let url = URL(string: "https://driver-vehicle-licensing.api.gov.uk/vehicle-enquiry/v1/vehicles") else { return }

let headers : HTTPHeaders = [
        "x-api-key": "mykey",
        "Content-Type": "application/json"
    ]

let params: Parameters = [
        "registrationNumber" : "TE57VRN" // 测试可先用curl示例中的合法车牌
    ]

// 仅修改encoding参数为JSONEncoding.default
AF.request(url, method: .post, parameters: params, encoding: JSONEncoding.default, headers: headers).responseJSON(completionHandler: { response in
    print(response)
})

补充检查项

如果修改编码后仍报错,请确认你传入的registrationNumber值符合英国DVLA车牌格式规范,不要直接使用占位字符串myreg发起请求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 20:36:01