Лабораторная работа: Технологія SOAP
Result := (RIO as IEncodeDecode);
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;
initialization
InvRegistry.RegisterInterface(TypeInfo(IEncodeDecode), 'urn:u_Intrf-IEncodeDecode', 'utf-8');
InvRegistry.RegisterDefaultSOAPAction(TypeInfo(IEncodeDecode), 'urn:u_Intrf-IEncodeDecode#%operationName%');
end.
Переходимо до другого етапу - безпосередньому створенню клієнта. Створимо заготівку нового додатку командою File |New | Application. На головній формі розташуймо рядок введення, дві кнопки і компонент HTTPRIO із закладки WebServices (мал. 9 ).
Малюнок 4.9
Компонент HTTPRIO призначений для виклику серверів через SOAP . Вкажемо у властивості URL значення http://localhost/Scripts/SOAPServerProject.exe/soap/IEncodeDecode, - шлях до сервера. Далі включимо в проект модуль Delphi з описом інтерфейсу сервера і вкажемо його в секції uses головної форми проекту.
Тепер можна переходити до написання коду виклику методів сервера. Оброблювачі подій натиснення на кнопки UkToEuro і EuroToUk виглядатимуть так:
procedure TForm1.UkToEuroClick(Sender: TObject);
var
X:IEncodeDecode;
R:Currency;
begin
X := HTTPRIO1 as IEncodeDecode;
R := X.UkToEuro(StrToCurr(Summa.Text));