如果有人对 USPS 交付确认 API 有任何经验,我将非常感谢我能获得的任何见解......
我正在使用 PHP 和 cURL 向 DC API 发送 XML 请求。当我通过 cURL 发送响应时,我什么也得不到。没有错误响应、没有 XML 或任何东西。当我通过浏览器发送 XML 时,我得到一个错误响应,这至少是一个响应。我处于停顿状态,因为我通过浏览器获得的错误明显(根据他们的支持线)意味着他们的服务器问题正在影响 API。但是,我不知道为什么我无法通过 cURL 获得该响应。
我们使用的是地址验证 API 和 .NET,而不是交付确认和 PHP,但也许我可以提供帮助。
您发送给邮局的 XML 应该只是查询字符串的一部分,如下所示:
https://servername/ShippingAPITest.dll?API=DeliveryConfirmationV3&XML=<DeliveryConfirmationV3.0Request USERID="username">…….</DeliveryConfirmationV3.0Request>
然后他们只是为您提供一个 XML 文档。我从来没有使用过 cURL 库,但也许你可以检查一下它实际发送的是什么。
另外,你批准了吗?如果没有,那么他们只允许预设测试响应。其他任何事情都会给你一个错误,即使它在生产服务器上是有效的。
我怀疑您的请求结构中有问题(例如,缺少标头),因为 XML 内容听起来像是有效的(或者至少像 USPS 的服务器正确读取它一样)。
我们的 USPS API 实现使用原始 TCP/IP 连接fsockopen
,它的优点是我可以准确地确认我们在请求结构中发送的内容:POST /ShippingAPI.dll HTTP/1.0
我们在请求中包含的唯一标头是:
User-Agent: (foo)\r\n
Host: (bar)\r\n
Content-Type: text/xml\r\n
Content-Length: strlen($xml)\r\n\r\n
这是否与您通过 cURL 发送的内容相匹配?