Google Script API routexl错误409

时间:2017-01-19 06:02:45

标签: javascript json google-apps-script google-apps

我正在尝试使用routexl API创建一个能够通过多个位置传递最快路径的脚本。但是,我尝试的所有内容似乎都会出现错误409截断的服务器响应。我的代码如下。

 function myFunctionpost() {
      var url = "https://api.routexl.nl/distances";
      var places = [{"address":"1","lat":"52.05429","lng":"4.248618"},{"address":"2","lat":"52.076892","lng":"4.26975"},{"address":"3","lat":"51.669946","lng":"5.61852"}];
      var locations = JSON.stringify(places);
      var headers = { 
          "Authorization":"Basic " + Utilities.base64Encode("Username:password"),
          "Content-Type":"application/json"
      };
      var options = { 
          'method' : 'post',
          'headers' : headers,
          'contentType': 'application/json',
          'payload' : locations,
          'muteHttpExceptions' : true
      };
      var response = UrlFetchApp.fetch(url, options);
      //var json = response.getContentText();
      //var data = JSON.parse(json);
      Logger.log(response);
  }

1 个答案:

答案 0 :(得分:0)

409错误表示找到了no input。我不是Google Apps专家,但RouteXL API需要"位置"作为输入参数。在您的示例中,发布的位置JSON没有位置键。

更新:在对Google Apps脚本进行一些测试后,我还发现需要调整ContentType。

这是一个对我有用的例子:

function myFunctionpost() {
      var url = "https://api.routexl.nl/distances";
      var places = [{"address":"1","lat":"52.05429","lng":"4.248618"},{"address":"2","lat":"52.076892","lng":"4.26975"},{"address":"3","lat":"51.669946","lng":"5.61852"}];
      var locations = JSON.stringify(places);
      var headers = { 
          "Authorization":"Basic " + Utilities.base64Encode("username:password")
      };
      var options = { 
          'method' : 'post',
          'headers' : headers,
          'contentType': 'application/x-www-form-urlencoded',
          'payload' : {'locations': locations},
          'muteHttpExceptions' : true
      };
      var response = UrlFetchApp.fetch(url, options);
      //var json = response.getContentText();
      //var data = JSON.parse(json);
      Logger.log(response);
  }