繁体   English   中英

使用 UrlFetchApp.fetch 的 Google 应用程序脚本在使用 XML 数据发出请求时出错

[英]Google apps script using UrlFetchApp.fetch getting an error when making request with XML data

编辑:关于乔纳森的评论:

运行此代码时,我收到以下错误:

无效参数: http ://production.shippingapis.com/ShippingAPI.dll?API=Verify&XML= 6406%20Ivy%20LaneGreenbeltMD

这是有问题的代码。 我没有包括我的用户 ID:

function validate_address() {

  //var userID = 'xxxxxxxxxxx';
  //var address1 = '204 main street apt 4';
  //var address2 = '';
  //var city = '';
  //var state = '';
  //var zip5 = '12601';
  //var zip4 = '';

  //Will switch out hard coded values with variables once I get it working.

  var XMLhttp_request = 'http://production.shippingapis.com/ShippingAPI.dll?API=Verify&XML=<AddressValidateRequest USERID="xxxxxxxxxxx"><Address><Address1></Address1><Address2>6406 Ivy Lane</Address2><City>Greenbelt</City><State>MD</State><Zip5></Zip5><Zip4></Zip4></Address></AddressValidateRequest>';

  var response = UrlFetchApp.fetch(XMLhttp_request, options);

  Logger.log(response.getContentText());

}

USPS 地址验证 API 在其网站上有一些示例代码。 当我将代码与我的用户 ID 一起使用时,将其直接复制并粘贴到 URL 栏中,它可以正常工作,并且我得到了我正在寻找的 XML。

所以我自己想出了这个。 这是帮助我的文档: Google 应用程序脚本文档解析 XML

我之前代码中的错误是将 api 的 URL 和参数组合在一起。 您可以在下面看到它们现在分开了,查询作为对象作为选项参数传入。 需要注意的一件事是“?” 查询之前的符号不在我的有效负载变量的开头。 虽然当您将其直接粘贴到地址栏中时,它已包含在 USPS 文档中,但在 GAS 中您将其省略。

这是对我有用的代码。 希望这对其他人有帮助。

function validate_address() {

  //var userID = 'xxxxxxxxxxx';
  //var address1 = '204 main street apt 4';
  //var address2 = '';
  //var city = '';
  //var state = '';
  //var zip5 = '12601';
  //var zip4 = '';

  //Will switch out hard coded values with variables once I get it working.

  var payload = 'API=Verify&XML=<AddressValidateRequest USERID="xxxxxxxxxxxx"><Address><Address1></Address1><Address2>6406 Ivy Lane</Address2><City>Greenbelt</City><State>MD</State><Zip5></Zip5><Zip4></Zip4></Address></AddressValidateRequest>';

  var url = 'http://production.shippingapis.com/ShippingAPI.dll';

  var options = {
    'method': 'get',
    'headers': {
        "Accept": "application/xml"
    },
    'payload': payload
};

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

  Logger.log(response.getContentText());

  //Logger.log(XMLhttp_request);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM