Delphi 2009 Web Services «XML-документ должен иметь элемент верхнего уровня» - PullRequest
2 голосов
/ 03 июня 2009

Множество демонстраций Delphi, которые я создал сегодня с Delphi 2009 (применено обновление 3/4), похоже, приводят к клиенту любого веб-сервиса localhost, который я пытаюсь использовать, возвращая документ «xml» должен иметь элемент верхнего уровня "ошибка

Это включает в себя, например, даже простую демонстрацию http://blogs.embarcadero.com/pawelglowacki/2008/12/18/38624

Чего мне не хватает? Что здесь не так? Очень расстраивает ...

Ответы [ 5 ]

1 голос
/ 23 февраля 2012

Скорее всего, проблема в том, что что-то в вашем модуле apache, возможно, ваш скрипт cgi вызывает серьезную внутреннюю ошибку сервера в Apache (HTTP 500). В результате ваш apache выдает ошибку, но эта ошибка в формате HTML, а не в формате XML. Так, например, если вы работаете с веб-сервисами, вы ожидаете получить SOAP (то есть XML), но вы получаете HTML, который не распознается, и в результате ваше приложение может показать что-то вроде «XML-документ должен иметь элемент верхнего уровня». или как в моем случае «Клиент обнаружил тип содержимого ответа TEXT / HTML, но ожидаемый текст / xml». Хуже всего то, что apache error.log ничего не показывает, а access.log покажет только 500 ошибок (хотя я установил его в режим отладки). Я использовал Wireshark, чтобы попытаться решить мою проблему. И я нашел подтверждение того, что я объяснил выше, но у меня пока нет решения моей проблемы.

1 голос
/ 10 июня 2009

Попробуйте установить следующие параметры для HTTPSoapPascalInvoker.Options:

soRootRefNodesToBody
soUTF8InHeader
soUTF8EncodeXML
0 голосов
/ 11 июня 2009

ОК - это немного странно ---

Я обнаружил, что все это работает под IIS, но не работает на Apache (решение eed3si9n НЕ работает на apache)

Хуже того, я обнаружил, что под apache мои основные поля содержимого cgi-запроса на POST пустуют под apache - но я просто развертываю под IIS, и он прекрасно работает

Так что либо виновником является моя установка apache, либо есть что-то неправильно с Apache с Delphi (конечно, это будет так широко распространено и исправлено)

Итак --- у кого-нибудь есть идеи, какие параметры конфигурации apache мне следует посмотреть здесь?

Спасибо-вы

0 голосов
/ 11 июня 2009

Скорее всего, это означает, что вы получили ответ HTML с сервера из-за ошибки при загрузке вашей библиотеки SOAP или из-за ошибки в самой библиотеке SOAP. HTML не может быть проанализирован и приводит к этой ошибке.

Прокси-сервер может помочь вам, но вы, возможно, захотите взглянуть на Wireshark , поскольку он позволит вам довольно легко перехватывать трафик, а не только для трафика HTTP.

0 голосов
/ 03 июня 2009

Возможно, вы неправильно сгенерировали данные XML. Каждый XML-документ должен иметь элемент верхнего уровня:

<xml version="..">
<topLevelElement>
 <element>
   ...
 </element>
 <element>
   ...
 </element>
<topLevelElement>

Если этот корневой элемент отсутствует, десериализатор создает исключение.

...