UPS XML-ответ 10002

#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>