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打開就成功了
Project25 - PortTypes: | |||
|
|||
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閃退,用火狐瀏覽器打開地址正常。