WebService 服務端客戶端 實例 HTTPRIO (一) SOAP WSDL

  Delphi中WebService包含的組件解釋(有7個)  
   (1) THTTPRIO-------:使用Http消息來調用遠程使用SOAP的接口對象     (2) THTTPReqResp---:給服務器發送一個SOAP消息, THTTPReqResp在可調用接口上執行一個方法請求.    
   (3) TOPToSoapDomConvert ----:TOPToSoapDomConvert處理Soap方法請求的組合與分發  
   (4) TSoapConnection:TSoapConnection在客戶端的多層數據庫應用中建立並維護客戶端和做爲WebService 的遠程應用服務器間的鏈接     (5) THTTPSoapDispatcher -----:經過將Soap消息轉發給調用者,THTTPSoapDispatcher對Soap消息作出響應.  
   (6) TWSDLHTMLPublish -----:TWSDLHTMLPublish發佈描敘webService應用的Wsdl文檔 
    (7) THTTPSoapPascalInvoker -----:THTTPSoapPascalInvoker解釋Soap的請求信息,並執行相應的可調用接口.android

 Webservice確定有wsdl地址描述ios

1、服務端web

一、File>New>WebService>Soap Server Application數據庫

二、Stand-alone vcl Application>VCL Application/FireMonkey Application我選VCLwindows

三、8080 Test Port瀏覽器

四、Add New WebService  Service Name :soapTest服務器

五、Add Function GetTime函數

soapTestIntf.pasthis

    function echoEnum(const Value: TEnumTest): TEnumTest; stdcall;
    function echoDoubleArray(const Value: TDoubleArray): TDoubleArray; stdcall;
    function echoMyEmployee(const Value: TMyEmployee): TMyEmployee; stdcall;
    function echoDouble(const Value: Double): Double; stdcall;url

soapTestImpl.pas

function TsoapTest.echoEnum(const Value: TEnumTest): TEnumTest; stdcall; begin   { TODO : Implement method echoEnum }   Result := Value; end;

function TsoapTest.echoDoubleArray(const Value: TDoubleArray): TDoubleArray; stdcall; begin   { TODO : Implement method echoDoubleArray }   Result := Value; end;

function TsoapTest.echoMyEmployee(const Value: TMyEmployee): TMyEmployee; stdcall; begin   { TODO : Implement method echoMyEmployee }   Result := TMyEmployee.Create; end;

function TsoapTest.echoDouble(const Value: Double): Double; stdcall; begin   { TODO : Implement method echoDouble }   Result := Value; end;

String TGetTimeImpl::GetTime(void)
{
 String str;
 str = Now();

}

Application後生成3個組件WebModuleUnit1.pas
一個是調用者組件:THTTPSoapPascalInvoker:完成Soap消息和....
一個是調度者組件:THTTPSoapDispatcher:自動響應送入的soap消息,而且把他們傳遞給調用者,可使用他的WebDispatch屬性來識別應用程序響應的http請求.
      包括設置PathInfo屬性來指明指向應用程序的任何URL的路徑部分,設置MethodType屬性來指明請求消息的方法頭.
一個是WSDL發佈者:TWSDLHTMLPublisher:WSDL發佈者發佈描敘接口以及如何調用他們的wsdl文檔,使用非delphi編寫的客戶端程序也能夠調用WebService應用程序.
 

用open Browse打開就成功了

http://localhost:8080/

  Project25 - PortTypes:
   
 
  • IsoapTest [WSDL]
    • echoEnum
    • echoDoubleArray
    • echoMyEmployee
    • echoDouble
    • sum
    • GetTime
 
  • IWSDLPublish [WSDL]
      Lists all the PortTypes published by this Service
    • GetPortTypeList
    • GetWSDLForPortType
    • GetTypeSystemsList
    • GetXSDForTypeSystem
  WSIL:  Link to WS-Inspection document of Services here
   

2、客戶端 Windows調用

方法一 

一、New VCL Application

二、Add HTTPRIO Component

三、IDE Menu Component>Import WSDL XE下目前這一步到url地址不成功,導入服務段保存的wsdl文件成功了

導入後系統生成IsoapTest1.pas文件

調用sum函數

 

  HTTPRIO1.URL := 'http://127.0.0.1:8080/'; 這樣報錯

 

  HTTPRIO1.URL := 'http://127.0.0.1:8080/soap/IsoapTest';
//  HTTPRIO1.URL:='http://localhost:8080/soap/IsoapTest';

這兩種方式均可以

  Caption := FloatToStr((HTTPRIO1 as IsoapTest).sum(3, 6));

procedure TForm25.btnTimeClick(Sender: TObject);
begin
  HTTPRIO1.URL := 'http://127.0.0.1:8080/soap/IsoapTest';
  Caption := (HTTPRIO1 as IsoapTest).GetTime;
end;

返回服務器的時間了

 

方法二

一、File>New>Other>WebService>Stand alone Application>VCL Application> WSDL Importer ... >Next>Finish

二、Add Form ,Add HTTPRIO Component

 

3、客戶端android調用

FireMonkey是跨平臺,支持windows、android、ios

方法1、

一、New FireMonkey Application

二、IDE Menu Component >WSDL

三、輸入URL地址OK啦

方法2、

一、File>New>Other>WebService>Stand alone Application>FireMonkey  Application> WSDL Importer ... >Next>Finish

二、Add Form ,Add HTTPRIO Component

 

2019.4.22

本機開發的Webservice,用2345瀏覽器打開就報錯,服務端EXE閃退,用火狐瀏覽器打開地址正常。

相關文章
相關標籤/搜索