Отсутствует узел верхнего уровня SOAP

Я импортировал WSDL (используя обнаружение автоверсии...), теперь, когда я пытаюсь его использовать, я получаю сообщение об ошибке, похожее на «отсутствует узел верхнего уровня, строка: 0», я потратил много часов на Google, чтобы найти исправление для этого, и я видел, что многие люди столкнулись с такой же проблемой, однако я не смог найти для нее исправления.

Я почти уверен, что многие разработчики исправили эту проблему, поэтому мой вопрос: КАК?!

При импорте WSDL он сгенерировал основной интерфейс, который имеет вспомогательные методы и специальную функцию, которая возвращает основной интерфейс, например:

type
  array_of_string = array of string;
  ASpecialInterface = interface(IInvokable)
    //...
    function ASpecialMethod(const dummyArg: string): array_of_string; stdcall;
    //...
  end;

и метод, который возвращает ASpecialInterface, например:

function GetASpecialInterface(const UseWSDL: Boolean; const addr: string; const ahttprio: THTTPRio): ASpecialInterface;

вот моя проблема:

procedure TMyForm.OnAButtonClick(Sender: Tobject);
var 
  LArrayOfString: array_of_string;
  LSpecialIntf: ASpecialInterface;
begin
  // this works without any issue whatsoever
  LSpecialIntf := GetASpecialInterface; // I call it with default params
  // the next code raises the exception mentioned above
  LArrayOfString := LSpecialIntf.ASpecialMethod(EmptyStr); // no param passed since the dummyArg is dummy
end;

Теперь я не уверен, что это ценно, но соединение выполняется с использованием SSL, то есть https://domain.com/...

EDIT: извините, забыл упомянуть, что я использую Delphi 2010

Спасибо всем за ваше время.


person Community    schedule 29.01.2011    source источник
comment
Какую версию Delphi вы используете? В D2010 вы получаете эту ошибку, когда сервер не найден. forums.embarcadero.com/thread.jspa?threadID=44545&tstart=0   -  person Mikael Eriksson    schedule 29.01.2011
comment
@Mikael Eriksson извините, что я забыл упомянуть, я использую Delphi 2010, я действительно не думаю, что их сервер не работает или что-то в этом роде, однако я только что пропинговал, и кажется, что он не может найти один из адресов, это действительно странно :-\   -  person    schedule 29.01.2011
comment
@ Микаэль Эрикссон, похоже, ваш ответ правильный, опубликуйте его как ответ, чтобы я мог его выбрать.   -  person    schedule 29.01.2011


Ответы (1)


В Delphi 2010 есть ошибка в soaphttptrans.pas. Когда сервер по какой-то причине не найден, вы получаете исключение EDOMParseError вместо ESOAPHTTPException, как это было раньше. Дополнительную информацию можно найти здесь: https://forums.embarcadero.com/thread.jspa?threadID=44545&tstart=0

person Mikael Eriksson    schedule 29.01.2011