SwiftUI中用Alamofire调用OpenAI API遇400错误,拟转后端
OpenAI API 400错误原因分析(SwiftUI + Alamofire场景)
既然你用cURL测试能正常返回结果,说明API Key和接口本身没问题,错误肯定出在Swift代码的请求构造与cURL的差异上,常见原因有这些:
请求参数问题
- 参数键名拼写错误:比如把必填的
prompt写成question,或者max_tokens、temperature这类参数名写错,OpenAI接口对参数名的大小写和拼写匹配严格 - 参数类型不匹配:比如
temperature要求传0-2之间的浮点数,你代码里传了整数;max_tokens必须是整数,要是传了字符串类型就会触发400 - 缺少必填参数:
prompt是接口的必填项,要是代码里没正确传递这个参数,或者参数值为空,接口直接返回400
- 参数键名拼写错误:比如把必填的
请求头配置错误
- API Key格式不对:cURL里是
Authorization: Bearer sk-xxx,Alamofire里要是漏了Bearer前缀,或者前缀和Key之间没加空格,就会导致身份验证不通过,返回400 - Content-Type设置错误:必须设置成
application/json,要是代码里用了application/x-www-form-urlencoded或者没设置这个头,接口无法解析JSON格式的请求体,就会报错
- API Key格式不对:cURL里是
请求体序列化方式错误
Alamofire默认的参数编码可能不是JSON格式,比如你用了URLEncoding.default而不是JSONEncoding.default,导致请求体是表单格式而非JSON,接口识别不了,自然返回400接口路径拼写错误
虽然你说用的是正确的接口地址,但要检查代码里有没有拼写失误,比如把engines写成engine,或者completions少写了字母,这类低级错误也会导致400
内容的提问来源于stack exchange,提问作者Refluent
相关产品推荐
相关产品推荐

