Unmarshalling Error - PullRequest
       30

Unmarshalling Error

3 голосов
/ 02 мая 2011

Я получаю сообщение об ошибке при попытке сделать запрос к службе SOAP:

Ошибка демаршаллинга: неожиданный элемент (uri: "http://www.domain.com/ws/servicename/", local:" dummyArg "). Ожидаемые элементы: <{} dummyArg>

Метод, который я вызываю, определяется как:

function GetTxServer(UseWSDL: Boolean; Addr: string; HTTPRIO: THTTPRIO): TxServer;

У меня небольшой опыт работы с SOAP, и я не смог найти никакой полезной информации по этому вопросу. Не стесняйтесь задавать любые вопросы, которые могут ускорить процесс поиска проблемы.

Я считаю, что способ вызова функции - неправильный!

Я использую Delphi 2010, и я назвал метод следующим образом:

Response := GetTxServer.requestIVULoto(cm);

1 Ответ

1 голос
/ 02 мая 2011

Используйте SoapUI (бесплатная версия в порядке) для использования WSDL и убедитесь, что вы можете правильно отправить запрос на сервер и получить ответ, который имеет смысл. Затем создайте «фиктивный» сервис в SoapUI, который будет выполнять роль сервера. Отправьте ваши запросы Delphi в mockservice (обычно это делается путем установки конечной точки на http://localhost:8089 или чего-то подобного), чтобы вы могли проверить отправляемый вами XML. Теперь вы можете поэкспериментировать и определить, связана ли проблема с отправкой неверных запросов, сервером, возвращающим неверные / неожиданные результаты, проблемами с интерпретацией хороших результатов и т. Д.

Кроме того, я думаю, что вы не можете правильно распределить или заполнить "cm". Я предполагаю, что это ваш объект запроса.

Также ... большой совет здесь .... Используйте событие RIO_BeforeExecute для отладки этого. На этом этапе SOAPRequest - это строка, которую вы можете просмотреть или вывести в файл. Таким образом, вы можете видеть, что вы отправляете, без использования SoapUI, Fiddler2, Wireshark и т. Д.

...