代码之家  ›  专栏  ›  技术社区  ›  codeacker

Google脚本API routexl错误409

  •  1
  • codeacker  · 技术社区  · 8 年前

    我正在尝试制作一个脚本,在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 回复  |  直到 8 年前
        1
  •  0
  •   RouteXL    8 年前

    409错误表明存在 no input 建立我不是谷歌应用专家,但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);
      }