验证(不再)是有效的API名称

时间:2016-09-29 13:33:30

标签: api google-sheets usps

我正在使用USPS API进行地址验证。出于我的目的,我在Google表格中制作了一个工具来自动执行查找过程。在相应的单元格中键入或粘贴FirmName / Address1 / Address2 / City / State,公式构建一个如下所示的请求:

=IMPORTDATA(http://production.shippingapis.com/ShippingAPI.dll?API=Verify&XML=<AddressValidateRequest USERID="XXXXXXXXX"><Address ID="0"><FirmName></FirmName><Address1></Address1><Address2>501 MAIN ST</Address2><City>WABASH</City><State>IN</State><Zip5></Zip5><Zip4></Zip4></Address></AddressValidateRequest>)

这适用于大约4周。然后有一天早上我打开了Sheet,而不是正常的响应,输出读取

<Error><Number>80040B1A</Number><Description>API Authorization failure. Verify is not a valid API name for this protocol.</Description><Source>USPSCOM::DoAuth</Source></Error> 

只要XML格式正确,这就是我得到的唯一响应。如果我将我的用户ID更改为某个假号码,则不会出现相关错误。我也尝试了其他API,并且都给出了相同的API授权失败。

如果我将XML请求粘贴到浏览器中,它会给出有效的响应,因此我知道我的API密钥仍然有效。我与几位正在使用自己的API密钥的同事分享了我的Google表格。他们遇到了同样的错误。

我一直与USPS支持人员保持联系,虽然他们不是即将发布,但他们并未表示他们已阻止Google服务器访问其API。我在Google表格中“报告了一个问题”,但我不希望听到任何来自Google的内容。

如果我不能让它首先发挥作用,那将是一回事。这是好几个星期以来我工作得很好。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

由于它在一段时间内运行正常,并且API调用仍然独立于Google表单,并且您已经尝试了其他具有类似结果的API,但似乎问题可能与Google表相关。

我注意到的唯一问题是URL没有用引号括起来。主要陷阱在IMPORTDATA docs page

的摘录中说明
  

语法   IMPORTDATA(URL)

     

url - 从中​​获取.csv或.tsv格式数据的网址,包括协议(例如http://)。

     
    

url的值必须用引号括起来,或者是对包含相应文本的单元格的引用。

  
     

注   单个电子表格最多支持50个IMPORTDATA调用。

(您可以在help forums中找到其他有趣的信息和数据。)

我建议您在单独的单元格中构建URL,以便引入诸如城市和州等字段数据。我认为这不会要求您使用引号,因为您的网址构建中包含引号括起的部分,因此可能需要使用引号。

然后,使用单元格引用将信息传递给IMPORTDATA。

(完全披露:我为SmartyStreets工作,这是一个地址验证提供商,提供额外的功能和正常运行时间保证。)