Swift发起URL请求调用RapidAPI返回401未授权错误求助
问题根因
- 最初版本的代码逻辑错误:你已经创建了配置了
x-rapidapi-key的URLRequest对象,但调用downloadData方法时传入的参数是原始URL,而不是你配置好的请求对象。downloadData内部直接用传入的URL发起请求,完全没有带上你设置的请求头,所以服务端识别不到身份,返回401未授权。 - 缺失必填请求头:对比RapidAPI提供的官方模板可以看到,该接口要求请求必须同时携带
x-rapidapi-key和x-rapidapi-host两个请求头,你最开始的代码仅配置了key,没有配置host,也会触发401错误。
修复验证
你更新后的代码已经同时解决了以上两个问题:
- 新增了
x-rapidapi-host请求头的配置 - 不再使用有问题的
downloadData方法,直接将配置了完整请求头的URLRequest对象传入URLSession发起请求,当前版本的代码已经可以正常拉取接口数据。
可选排查项
如果更新后仍然出现问题,可以按顺序排查:
- 检查请求头中填写的API Key是否有多余空格、字符错误
- 确认你定义的
Result模型结构和接口返回的JSON结构完全匹配,避免解码静默失败 - 可以在状态码判断的位置打印返回的错误响应体,确认服务端返回的具体错误提示
内容的提问来源于stack exchange,提问作者Nursultan Yelemessov
相关产品推荐
相关产品推荐

