#xml #api #ups
#xml #API #ИБП
Вопрос:
У меня возникли некоторые проблемы с получением ответа от API отслеживания UPS.
Я написал сценарий VBA, который возвращает следующую строку XML и отправляет ее на сервер тестирования отслеживания XML UPS (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>
Я видел это сообщение несколько раз, и большинство людей упускают что-то маленькое или глупую ошибку, но я проходил через это несколько раз и пробовал много разных производных, он еще не вернул правильный ответ. Я просмотрел руководство разработчика и дважды проверил, что все требуемые запросы присутствуют и корректны. Я надеюсь, что кто-нибудь может указать на мою ошибку, потому что я начал ходить по кругу.
Заранее большое спасибо!
Комментарии:
1. Если кто-то еще борется с этим, я обнаружил, что мой XML не был проблемой в конце концов. VBA не позволяет (и это правильно) добавлять объект XML к объекту XML. Странная система UPS означает, что вам нужно присоединиться к ним в момент отправки запроса с помощью HTTP-объекта, т.Е. myHTTP.send (AccessRequestXml.XML amp; TrackingRequestXml.XML )
Ответ №1:
Описание ошибки говорит само за себя. Перед отправкой в UPS необходимо проверить отправленный XML-файл на соответствие XSD, предоставленному UPS.
Ответ №2:
Это работает для меня.
<?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>