使用AppScript构造API请求时遇无效请求错误求助
问题分析与修正代码
原代码存在几个关键错误:
- 请求参数结构错误:
method、payload不应放在headers对象中,它们是UrlFetchApp.fetch的独立配置项 - Body格式错误:手动添加转义引号会导致JSON格式无效,应该使用标准的对象结构,再转为合法的JSON字符串
- 多余的
Host头:UrlFetchApp会自动根据请求URL生成该头,无需手动设置
修正后的代码
var url_string = "https://imagealttextcreation.cognitiveservices.azure.com/vision/v3.2/describe"; // 构造标准的请求体对象 let body = { url: "https://www.khwaahish.com/wp-content/uploads/2022/01/khwaahish-white-bg-logo.jpg" }; // 配置请求选项,method、headers、payload同级 const options = { method: 'POST', headers: { 'Content-Type': 'application/json', 'Ocp-Apim-Subscription-Key': '###' // 替换为你的实际密钥 }, // 将对象转为JSON字符串作为请求体 payload: JSON.stringify(body) }; var response = UrlFetchApp.fetch(url_string, options); Logger.log(response.getContentText()); // 打印格式化的响应内容
关键修正点说明
- 将
headers拆分为独立的options配置对象,method和payload与headers同级 - 移除手动添加的转义引号,使用原生对象定义请求体,再通过
JSON.stringify()转为符合要求的JSON格式字符串 - 移除不必要的
Host头,避免请求格式冲突 - 改用
response.getContentText()更清晰地打印响应内容
内容的提问来源于stack exchange,提问作者KKK
相关产品推荐
相关产品推荐

