Липсва 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/...

РЕДАКТИРАНЕ: Съжалявам, забравих да спомена, че използвам 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
@Mikael Eriksson изглежда, че вашият отговор е правилният, публикувайте го като отговор, за да мога да го избера.   -  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