问题描述
我在从 UPS 的 Tracking API 获得响应时遇到了一些问题。
我编写了一个 VBA 脚本,该脚本返回以下 XML 字符串并将其发送到 UPS 的 XML 跟踪测试服务器 (https://wwwcie.ups.com/ups.app/xml/Track)。跟踪号是一个测试号。
<?xml version="1.0"?><AccessRequest xml:lang="en-US"><AccessLicenseNumber>* MY KEY *</AccessLicenseNumber><UserId>* MY LOGIN *</UserId><Password>* MY PASSWORD *</Password></AccessRequest><?xml version="1.0"?><TrackRequest xml:lang="en-US"><Request><TransactionReference><CustomerContext>Test Case Summary Description</CustomerContext><ToolVersion>1.0</ToolVersion></TransactionReference><RequestAction>Track</RequestAction><RequestOption>1</RequestOption></Request><TrackingNumber>1Z12345E0291980793</TrackingNumber></TrackRequest>
为了便于阅读,我在此处对其进行了格式化:
<?xml version="1.0"?>
<AccessRequest xml:lang="en-US">
<AccessLicenseNumber>* MY KEY *</AccessLicenseNumber>
<UserId>* MY LOGIN *</UserId>
<Password>* MY PASSWORD *</Password>
</AccessRequest>
<?xml version="1.0"?>
<TrackRequest xml:lang="en-US">
<Request>
<TransactionReference>
<CustomerContext>Test Case Summary Description</CustomerContext>
<ToolVersion>1.0</ToolVersion>
</TransactionReference>
<RequestAction>Track</RequestAction>
<RequestOption>1</RequestOption>
</Request>
<TrackingNumber>1Z12345E0291980793</TrackingNumber>
</TrackRequest>
这实际上是他们在开发人员指南中提供的示例 XML 的衍生,但它始终返回以下错误:
<?xml version="1.0"?>
<TrackResponse>
<Response>
<ResponseStatusCode>0</ResponseStatusCode>
<ResponseStatusDescription>Failure</ResponseStatusDescription>
<Error>
<ErrorSeverity>Hard</ErrorSeverity>
<ErrorCode>10002</ErrorCode>
<ErrorDescription>The XML document is well formed but the document is not valid</ErrorDescription>
</Error>
</Response>
</TrackResponse>
我已经多次看到这个帖子,并且大多数人都遗漏了一些小错误或愚蠢的错误,但我已经多次解决这个问题并尝试了许多不同的衍生产品,它尚未返回正确的响应。我已经阅读了开发人员指南并仔细检查了所有必需的请求是否存在且正确。我希望有人能指出我的错误,因为我已经开始兜圈子了。
非常感谢!
解决方法
错误描述说明了一切。在向 UPS 提交任何文件之前,您需要根据 UPS 提供的 XSD 验证您提交的 XML。
,这对我有用。
<?xml version="1.0"?>
<AccessRequest>
<AccessLicenseNumber>xxx</AccessLicenseNumber>
<UserId>xxx</UserId>
<Password>xxx</Password>
</AccessRequest>
<TrackRequest xml:lang="en-US">
<Request>
<TransactionReference>
<CustomerContext>UniqueID</CustomerContext>
<XpciVersion>1.0001</XpciVersion>
</TransactionReference>
<RequestAction>Track</RequestAction>
<RequestOption>Activity</RequestOption>
</Request>
<TrackingNumber>1z....</TrackingNumber>
</TrackRequest>