Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Исправление ошибки отслеживания посылок UPS в Delphi 2009

Delphi , Синтаксис , Ошибки и Исключения

Введение

В данной статье мы рассмотрим проблему, с которой сталкиваются разработчики, использующие сервис отслеживания посылок UPS в среде Delphi 2009. Проблема заключается в ошибке при вызове веб-сервиса, связанной с неверным или отсутствующим номером запроса. Мы подробно опишем, как была решена эта проблема, и приведем примеры кода на Object Pascal, которые помогут читателям избежать подобных ошибок в будущем.

Описание проблемы

При импорте WSDL UPS в Delphi 2009 без ошибок, разработчик смог вызвать веб-сервис, используя свои учетные данные и примерный номер посылки. Однако, в ответ от сервера пришел XML с описанием ошибки:

<detail>
  <err:Errors xmlns:err="http://www.ups.com/XMLSchema/XOLTWS/Error/v1.1">
    <err:ErrorDetail>
      <err:Severity>Hard</err:Severity>
      <err:PrimaryErrorCode>
        <err:Code>9150002</err:Code>
        <err:Description>Invalid or missing inquiry number - TrackingNumber, ShipmentIdentificationNumber, or ReferenceNumber</err:Description>
      </err:PrimaryErrorCode>
    </err:ErrorDetail>
  </err:Errors>
</detail>

Ошибка указывает на то, что номер запроса (TrackingNumber, ShipmentIdentificationNumber или ReferenceNumber) либо неверен, либо отсутствует.

Пример кода

Вот пример кода, который использовался для вызова веб-сервиса:

var
  Service: TrackPortType;
  MyRequest: TrackRequest;
  Security: UPSSecurity;
  MyResponse: TrackResponse;
  ReqOpt: Array_Of_string;
begin
  Service := (HTTPRIO1 as TrackPortType);
  // ... (дальше идет код инициализации Security, MyRequest и т.д.)
  MyRequest.TrackingOption := '02';
  MyRequest.InquiryNumber := '1Z...'; 
  // ... (дальше идет код вызова сервиса и обработки исключений)
end;

Подтвержденное решение

Проблема была решена с помощью Java API для XML Web Services (JAX-WS). Разработчик создал прокси-сервлет на Java, который может быть интегрирован с Delphi. GUI-приложение на Delphi затем может использовать простой HTTP-запрос для получения статуса отслеживания посылки.

Альтернативный ответ

В качестве альтернативного подхода разработчик также попробовал ручную кодировку SOAP XML тела запроса, используя компоненты Indy и XMLDocument вместо встроенной библиотеки SOAP в Delphi.

Выводы и рекомендации

Используя предоставленный опыт, можно сделать вывод, что иногда стандартные инструменты Delphi могут не справляться с задачей, и требуется применение альтернативных технологий, таких как Java или Indy. При работе с веб-сервисами важно тщательно проверять формат запросов и корректность передаваемых данных.

Заключение

В статье мы рассмотрели типичную проблему, с которой сталкиваются разработчики при работе с веб-сервисом отслеживания посылок UPS в среде Delphi 2009, и предложили решение, основанное на реальном опыте использования Java API и Indy. Надеемся, что предоставленные рекомендации и примеры кода помогут читателям в будущем избегать подобных ошибок и успешно интегрировать веб-сервисы в свои проекты на Delphi.

Создано по материалам из источника по ссылке.

Проблема с импортом и использованием веб-сервиса отслеживания посылок UPS в Delphi 2009, где отсутствует корректный номер запроса, из-за чего возвращается ошибка со стороны сервиса.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Ошибки и Исключения ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-02-05 12:49:45/0.013771057128906/1