11

我正在尝试使用来自 GoogleApps 脚本的 API 将组和联系人添加到 SendHub 帐户。我可以成功发出 GET 请求并毫无问题地取回 JSON 数据。当我尝试 POST 请求添加对象时,我收到了 400、401 和 405 错误,具体取决于我准备数据的方式。

这会出现 400 错误:

  var headers = {
    "Content-type" : "application/json"
  };
  var data = {
    "name" : "Me Testing",
    "slug" : "me-testing",
    "text_to_subscribe" : true
  };
  var payload = {
    "data" : Utilities.jsonStringify(data)
  };
  var options = {
    "method" : "post",
    "headers" : headers,
    "payload" : payload
  };
  var url = "https://api.sendhub.com/v1/groups/?username=USERNAMEWORKSFORGETREQUESTS&api_key=KEYWORKSFORGETREQEUSTS";
  var response = UrlFetchApp.fetch(url, options);

我已经做了几次不同的尝试来改变选项对象的形成方式,结果从 400、401 或 405 错误不等。我对如何为这里的 SendHub API 形成正确的 POST 请求感到困惑

我在这篇文章后不久就开始工作了。这是我所做的:

  var data = {
    "name" : "Me Testing",
    "slug" : "me-testing",
    "text_to_subscribe" : "true"
  };
  var payload = JSON.stringify(data);
  var options = {
    "method" : "POST",
    "contentType" : "application/json",
    "payload" : payload
  };
  var url = "https://api.sendhub.com/v1/groups/?username=GOODUSERNAME&api_key=GOODAPIKEY";
  var response = UrlFetchApp.fetch(url, options);
4

2 回答 2

8

我将答案放在问题的编辑部分。我不确定我所做的三项更改中的哪一项使它起作用,但我留下了确实起作用的示例代码。

 var data = {
    "name" : "Me Testing",
    "slug" : "me-testing",
    "text_to_subscribe" : "true"
  };
  var payload = JSON.stringify(data);
  var options = {
    "method" : "POST",
    "contentType" : "application/json",
    "payload" : payload
  };
  var url = "https://api.sendhub.com/v1/groups/?username=GOODUSERNAME&api_key=GOODAPIKEY";
  var response = UrlFetchApp.fetch(url, options);
于 2013-08-22T18:14:51.220 回答
1

您发布的解决方案对我不起作用,这对我有用:

 function example() {

   var payload = {
     "api_key" : "SFS1234SDF",
     "list_id" : "4"
   };

   var options = {
     "method"  : "post",
     "payload" : payload
   };

   var url        = "http://my-url.com";   
   var response   = UrlFetchApp.fetch(url, options);   

   Logger.log(response);

   return response.getContentText();

 }

使用 View -> Log 选项进行调试。

于 2015-07-14T02:59:46.733 回答