USPS API地址验证失败

时间:2014-05-03 23:55:51

标签: php xml usps

我尝试使用USPS API来验证地址。我已完成注册过程,测试和升级到制作。

我使用PHP和simplexml_load_file函数进行调用。当我用PHP进行调用时,USPS会返回错误:

[Number] => 80040B1A
[Description] => API Authorization failure. Verify is not a valid API name for this protocol.
[Source] => USPSCOM::DoAuth

如果我复制并粘贴传递给simplexml_load_file函数的url,我会得到一个成功的响应:

<AddressValidateResponse><Address ID="0"><Address2>1228 E MAIN ST</Address2><City>MONTROSE</City><State>CO</State><Zip5>81401</Zip5><Zip4>5821</Zip4></Address></AddressValidateResponse>

我使用的网址是(用户ID已更改):

http://production.shippingapis.com/ShippingAPI.dll?API=Verify&XML=%3CAddressValidateRequest%20USERID=%123usrid456%27%3E%3CAddress%20ID=%270%27%3E%3CAddress1%3E1228%20East%20Main%20Street%3C/Address1%3E%3CAddress2%3E%3C/Address2%3E%3CCity%3EMontrose%3C/City%3E%3CState%3ECO%3C/State%3E%3CZip5%3E81401%3C/Zip5%3E%3CZip4%3E%3C/Zip4%3E%3C/Address%3E%3C/AddressValidateRequest%3E

我两次拨打800 ICCC USPS号码。文档在几个方面缺乏,例如,他们说在注册后,电子邮件将包含测试服务器的URL,但它们不在电子邮件中。此外,每次呼叫支持和等待持续将近一个小时是令人沮丧的。好的,抱怨太多了。否则,USPS很棒。

我已经阅读了很多帖子,并尝试了所建议的内容,但是还没有能够在PHP工作中进行调用。以下是我尝试过的内容:

  • urlencode提交的网址中的XML字符串
  • urlencode整个网址
  • 测试和生产服务器
  • curl而不是simplexml_load_file
  • 我已经复制了浏览器地址栏中的网址并将其粘贴到PHP代码中 - 我仍然遇到同样的错误。

我不知道接下来应该尝试什么。特别是当我把url传递给simplexml_load_file并将其复制/粘贴到浏览器地址栏中时工作正常。

这是我尝试过的一个片段:

$url = "http://production.shippingapis.com/ShippingAPI.dll?API=Verify&XML=<AddressValidateRequest%20USERID='123usrid456'><Address ID='0'><Address1></Address1><Address2>1228 East Main Street</Address2><City>Montrose</City><State>CO</State><Zip5>81401</Zip5><Zip4></Zip4></Address></AddressValidateRequest>";
$addr_data = simplexml_load_file($url);
上面代码中

用户ID已更改

我确定我错过了一些明显的东西。

提前致谢!

斯隆

1 个答案:

答案 0 :(得分:0)

除了HTTP GET请求,您不仅要发送地址(在浏览器和simpleXML中大概相同),还要发送一堆标题(例如cookie)。我猜测API也会检查这些标头。对我来说有点奇怪的是,指定了用户名但访问信息(令牌/密钥/密码)不是 - 它们不是由浏览器作为cookie发送的?重新审视API规范,尤其是通用/身份验证章节;也许你只是忘记了那些藏在那些中的先决条件。

这就是我要做的事情:

  1. 暂时转换为卷曲,以便我可以更改标题。
  2. 使用浏览器的网络调试器(例如Firefox F12-> Net)查看发送的标头。
  3. 在curl中设置完全相同的标题,看看它是否有效。如果它没有停止这种方法。
  4. 逐个删除标题,看看哪些是成功必不可少的。