【问题标题】:Using Google Apps Script to Post JSON Data使用 Google Apps 脚本发布 JSON 数据
【发布时间】:2013-06-25 11:21:27
【问题描述】:

我正在尝试将 JSON 数据从 google 脚本发布到 URL,但出现上述错误:

服务器响应:HTTP 状态 415 - 不支持的媒体类型

我的代码:

function myFunctionpost() {
  var url = "http://abc.xyz.org/jira/rest/api/2/issue";
  var data = {
    "project": {
      "key": "KEY"
    },
    "summary": "create issue.",
    "description": "Creating of an issue from google spreadsheet using the REST API",
    "issuetype": {
      "name": "Bug"
    }
  };
  var payload = JSON.stringify(data);

  var headers = {
    "Accept": "application/json",
    "Content-Type": "application/json",
    "Authorization": "Basic _authcode_"
  };

  var options = {
    "method": "POST",
    "headers": headers,
    "payload": payload
  };
  var response = UrlFetchApp.fetch(url, options);
  Logger.log(response);
}

我尝试更改content-type,但没有成功。

身份验证码有效,因为我能够从 URL 获取。

【问题讨论】:

    标签: json google-apps-script http-post jira content-type


    【解决方案1】:

    在 UrlFetchApp 语法中非常反直觉,但是:

    POST /api/ra/v1/ping HTTP/1.0
    Host: app.kigo.net
    Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=
    Content-Type: application/json
    

    很好地翻译成这种卷曲:

    curl https://app.kigo.net/api/ra/v1/ping -X POST -H "授权: 基本 dXNlcm5hbWU6cGFzc3dvcmQ=" -H "Content-Type: application/json"

    在 Google 应用脚本中转换为:

    function myFunction() {
      var headers = {
        "Authorization": "Basic dXNlcm5hbWU6cGFzc3dvcmQ="
      };
      var options = {
        "contentType": "application/json",
        "method": "post",
        "headers": headers,
        "payload": "test"
      };
      var response = UrlFetchApp.fetch("https://app.kigo.net/api/ra/v1/ping", options);
    }
    

    【讨论】:

      【解决方案2】:

      像这样将contentType 对象添加到您的options

      var options = {
        "method": "POST",
        "contentType": "application/json",
        "headers": headers,
        "payload": payload
      };
      

      ContentType 是 fetch 方法接受的高级参数之一。查看更多here

      【讨论】:

      • 令人讨厌的是 UrlFetchApp.fetch() 忽略/覆盖“headers”选项中指定的“Content-Type”标头。我一直在扯头发一个多小时,试图找出我做错了什么,直到我偶然发现了这个答案!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-22
      • 2021-01-10
      • 2018-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多