使用Google Apps Script调用Vehicle Enquiry Service API遇注册号格式错误
解决Vehicle Enquiry Service API调用400错误(ENQ108)的问题
问题根源分析
你遇到的ENQ108错误是车牌格式无效,结合代码来看,主要存在三个问题:
- 车牌字符串末尾带有多余空格:
"AA19AAA " - Google Apps Script的
UrlFetchApp不识别data参数,需用payload且转为JSON字符串 - 请求头配置重复,
options里同时设置了headers和单独的x-api-key,造成冗余冲突
修复后的代码
function myFunction() { const url = "https://driver-vehicle-licensing.api.gov.uk/vehicle-enquiry/v1/vehicles"; const apiKey = "你的API密钥"; // 移除车牌首尾空格,确保格式合规 const payload = JSON.stringify({ "registrationNumber": "AA19AAA" }); const options = { method: 'POST', headers: { "x-api-key": apiKey, 'Content-Type': 'application/json' }, payload: payload, // 开启后可捕获非200状态码的响应,便于调试 muteHttpExceptions: true }; try { const response = UrlFetchApp.fetch(url, options); Logger.log("响应状态码:" + response.getResponseCode()); Logger.log("响应内容:" + response.getContentText()); } catch (e) { Logger.log("请求异常:" + e.toString()); } }
关键修复点说明
- 清理车牌格式:API对车牌格式要求严格,必须移除首尾所有空白字符
- 正确配置请求体:Google Apps Script中POST请求的请求体必须放在
payload字段,且需通过JSON.stringify()将对象转为JSON字符串,否则API无法解析格式 - 统一请求头配置:将
x-api-key和Content-Type统一放在headers对象内,避免重复配置导致的冲突 - 添加异常处理:通过
try-catch和muteHttpExceptions可以捕获并打印详细错误信息,方便排查问题
额外调试建议
如果仍报错,可以:
- 先切换到UAT测试URL验证请求格式,测试环境的错误反馈更友好
- 打印最终发送的
payload和headers内容,确认是否完全符合API文档要求
内容的提问来源于stack exchange,提问作者Dan M
相关产品推荐
相关产品推荐

