Google Apps Script调用RapidAPI领英接口报value is not a valid dict错误
错误原因
- 你直接将JS对象作为
payload传入UrlFetchApp的请求参数,GAS默认会将其序列化为表单编码格式,而该RapidAPI接口要求接收JSON格式的请求体,参数格式不匹配触发了服务端校验报错。 - 你将
contentType配置错误写在了请求头中,Google App Script的UrlFetchApp需要将内容类型作为独立参数放在请求配置项中,否则请求头格式不符合预期。
修复后的完整代码
function callLinkedInAPI () { var payload = { "profile_id": "williamhgates", "profile_type": "personal", "contact_info": false } // 提前将payload序列化为JSON字符串 payload = JSON.stringify(payload) var headers = { "x-rapidapi-host": "linkedin-profiles-and-company-data.p.rapidapi.com", "x-rapidapi-key": "76db3a1901mshd1518c9ce779bdep1c5920jsn3e0ec4853b66" } var url = `https://linkedin-profiles-and-company-data.p.rapidapi.com/api/v1/profile-details` var requestOptions = { 'method': "POST", 'headers': headers, 'payload': payload, // 单独配置contentType参数 'contentType': 'application/json', 'muteHttpExceptions': true, 'redirect': 'follow' }; var response = UrlFetchApp.fetch(url, requestOptions); var json = response.getContentText(); var data = JSON.parse(json); console.log(data) }
效果说明
修改后请求会按照application/json格式发送序列化后的JSON参数,符合接口的参数要求,即可解决服务端返回的value is not a valid dict类型错误。
内容的提问来源于stack exchange,提问作者Mario Perry
相关产品推荐
相关产品推荐

