• alol55 (14.12.10 08:36) [0]
    Делаю клиентскую часть к вебсервису.
    Импортировала WSDL, получила  интерфейс вебсервиса AuthenticationServiceSoap.

    AuthenticationServiceSoap = interface(IInvokable)
     ['{...}']
       function  AutoLogin: Boolean; stdcall;
       function  Login(const username: WideString; const password: WideString; const clientVersion: WideString): UserInfo; stdcall;
       function  Logout: Boolean; stdcall;
     end;

    function GetAuthenticationServiceSoap(UseWSDL: Boolean=System.False; Addr: string=''; HTTPRIO: THTTPRIO = nil): AuthenticationServiceSoap;

    implementation

    function GetAuthenticationServiceSoap(UseWSDL: Boolean; Addr: string; HTTPRIO: THTTPRIO): AuthenticationServiceSoap;
    const
     defWSDL = 'D:\xml\ASV.Services.AuthenticationService.xml';
     defURL  = 'http://.../csp/asv/ASV.Services.AuthenticationService.cls';
     defSvc  = 'AuthenticationService';
     defPrt  = 'AuthenticationServiceSoap';
    var
     RIO: THTTPRIO;
    begin
     Result := nil;
     if (Addr = '') then
     begin
       if UseWSDL then
         Addr := defWSDL
       else
         Addr := defURL;
     end;
     if HTTPRIO = nil then
       RIO := THTTPRIO.Create(nil)
     else
       RIO := HTTPRIO;
     try
       Result := (RIO as AuthenticationServiceSoap);
       if UseWSDL then
       begin
         RIO.WSDLLocation := Addr;
         RIO.Service := defSvc;
         RIO.Port := defPrt;
       end else
         RIO.URL := Addr;
     finally
       if (Result = nil) and (HTTPRIO = nil) then
         RIO.Free;
     end;
    end;



    Вызываю GetAuthenticationServiceSoap:

     a:=GetAuthenticationServiceSoap;
     a.Login('<username>','<pwd>','1.1');

    На вызове Login получаю ошибку "The security token could not be authenticated or authorized". (В качестве ip, username и pwd стоят правильные данные, здесь я их убрала). Что я делаю не так?
  • asafr (14.12.10 11:48) [1]
    При вызове GetAuthenticationServiceSoap, какое значение проставляется в параметре функции UseWSDL?
  • Плохиш © (14.12.10 11:55) [2]

    > alol55   (14.12.10 08:36)


    var
        varUserInfo: UserInfo;
    ...
    varUserInfo := GetAuthenticationServiceSoap().Login('<username>','<pwd>','1.1');
    ...

  • alol55 (14.12.10 12:39) [3]

    > asafr   (14.12.10 11:48) [1]
    >
    > При вызове GetAuthenticationServiceSoap, какое значение
    > проставляется в параметре функции UseWSDL?


    пробовала и true, и false - результат одинаковый
  • alol55 (14.12.10 12:41) [4]

    > var
    >     varUserInfo: UserInfo;
    > ...
    > varUserInfo := GetAuthenticationServiceSoap().Login('<username>',
    > '<pwd>','1.1');
    > ...


    Результат такой же.
  • Плохиш © (14.12.10 12:50) [5]
    Значит надо обратиться за разъяснениями к владельцам требуемого веб-сервиса.
  • asafr (15.12.10 16:46) [6]
    Проверте на актуальность
     defWSDL = 'D:\xml\ASV.Services.AuthenticationService.xml';
    defURL  = 'http://.../csp/asv/ASV.Services.AuthenticationService.cls';
    defSvc  = 'AuthenticationService';
    defPrt  = 'AuthenticationServiceSoap';
    И попробуйте так..
    В Properties компоненты HTTPRio укажите путь на WSDL-файл
    Проверьте, чтобы в WSDL - файле были корректно прописаны пути
    Затем
    (HTTPRio As AuthenticationServiceSoap).Login('<username>',> '<pwd>','1.1');
  • asafr (15.12.10 16:47) [7]
    Смущает меня.. Эти три точки...
    Да и остальное проверьте
    defURL  = 'http://.../csp/asv/ASV.Services.AuthenticationService.cls';
Есть новые Нет новых   [134436   +25][b:0][p:0.002]