【问题标题】:UrlFetchApp Google Scripts VS Node FetchUrlFetchApp Google Scripts VS Node Fetch
【发布时间】:2021-04-10 11:58:49
【问题描述】:

我在使用 Google Scripts 上的 UrlFetchApp 执行简单的 POST 请求时遇到了一些问题。

此代码在带有 node-fetch lib 的 NodeJS 上运行良好。

const fetch = require('node-fetch');
const URL = "https://login.XXXXXXXXXXXXX.com.br/api/login"

fetch(URL, {
  "body": "{'my_json_data': 'login data'}",
  "method": "POST",
}).then(res => res.text())
  .then(body => console.log(JSON.parse(body)));

在使用 UrlFetchApp 的 Google Scripts 项目上的相同请求给了我一个 403 Forbidden HTTP 错误。

var url = 'https://login.XXXXXXXXX.com.br/api/login';
  var data = {
    'email':'EMAIL',
    'password':'PASS'
  }

  var options = {
    method: 'POST',
    payload: JSON.stringify(data)
  }

  var response = UrlFetchApp.fetch(url, options);
  Logger.log(response)

我在这里错过了什么?

编辑:已尝试使用有效负载。

【问题讨论】:

    标签: node.js post google-apps-script http-status-code-403 urlfetch


    【解决方案1】:

    我相信你的目标如下。

    • 您希望将以下 Node.js 脚本转换为 Google Apps 脚本。

        const fetch = require('node-fetch');
        const URL = "https://login.XXXXXXXXXXXXX.com.br/api/login"
      
        fetch(URL, {
          "body": "{'my_json_data': 'login data'}",
          "method": "POST",
        }).then(res => res.text())
          .then(body => console.log(JSON.parse(body)));
      

    修改点:

    • 在您的 Node.js 脚本中,"{'my_json_data': 'login data'}" 的数据作为text/plain 发送到data。所以在这种情况下,当使用 UrlFetchApp 时,需要设置内容类型。因为不设置内容类型时,数据以form-data发送。

    当以上几点反映到你的脚本中时,它变成如下。

    修改脚本:

    从:
    var options = {
      method: 'POST',
      payload: JSON.stringify(data)
    }
    
    到:
    var options = {
      method: 'POST',
      payload: JSON.stringify(data),
      contentType: "text/plain"
    }
    
    • 如果contentType: "text/plain"出现错误,请修改为contentType: "text/plain;charset=UTF-8"
    • 虽然我不确定您的 API 规范,但我认为contentType: "application/json" 可能也可以使用。但这是我的猜测。

    参考:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-08
      • 1970-01-01
      • 1970-01-01
      • 2020-08-06
      • 1970-01-01
      • 2021-02-18
      • 2011-11-26
      • 1970-01-01
      相关资源
      最近更新 更多