Windows Cmd下调用ChatGPT API的curl请求JSON解析错误排查
Windows Cmd下curl调用ChatGPT API错误排查
以下是你遇到的JSON解析错误、URL格式错误、请求内容不完整问题的常见原因及解决办法:
1. JSON参数转义规则错误
Windows Cmd不支持用单引号包裹JSON字符串,且对双引号的转义规则与Linux Shell不同。直接照搬官方文档的bash格式命令会导致Cmd将JSON中的双引号解析为参数分隔符,截断请求内容,触发JSON解析错误。
正确写法:
将JSON内部的双引号用反斜杠转义,同时用双引号包裹整个-d参数:
curl https://api.openai.com/v1/chat/completions -H "Content-Type: application/json" -H "Authorization: Bearer YOUR_API_KEY" -d "{\"model\":\"gpt-3.5-turbo\",\"messages\":[{\"role\":\"user\",\"content\":\"Hello!\"}]}"
或者将内部双引号替换为两个连续双引号:
curl https://api.openai.com/v1/chat/completions -H "Content-Type: application/json" -H "Authorization: Bearer YOUR_API_KEY" -d "{""model"":""gpt-3.5-turbo"",""messages"":[{""role"":""user"",""content"":""Hello!""]}"
2. 命令换行未做续行处理
如果命令拆分成多行输入,Cmd默认会将每行视为独立命令,导致curl无法接收完整的请求参数,触发URL格式错误或请求内容不完整。
正确写法:
在每行末尾添加^作为续行符(注意^后面不能有空格或换行):
curl https://api.openai.com/v1/chat/completions ^ -H "Content-Type: application/json" ^ -H "Authorization: Bearer YOUR_API_KEY" ^ -d "{\"model\":\"gpt-3.5-turbo\",\"messages\":[{\"role\":\"user\",\"content\":\"Hello!\"}]}"
3. 旧版本curl兼容性问题
Windows自带的curl版本可能较老旧,对某些参数格式的支持存在bug,导致请求封装不完整。
解决办法:
- 升级curl到最新稳定版本,替换系统自带的curl;
- 改用PowerShell执行命令,其转义规则更接近Shell,无需复杂转义:
Invoke-RestMethod -Uri https://api.openai.com/v1/chat/completions -Method Post -Headers @{"Content-Type"="application/json";"Authorization"="Bearer YOUR_API_KEY"} -Body '{"model":"gpt-3.5-turbo","messages":[{"role":"user","content":"Hello!"}]}'
4. 请求头格式错误
若Authorization头格式有误(比如Bearer后缺少空格、API_KEY输入错误),API返回的错误信息可能被误判为JSON解析错误,同时可能伴随URL格式错误提示。
检查要点:
- 确保
Authorization: Bearer YOUR_API_KEY中Bearer与API_KEY之间有且仅有一个空格; - 验证API_KEY是否正确,无多余空格或字符。
内容的提问来源于stack exchange,提问作者l yu moon
相关产品推荐
相关产品推荐

