我有一支老舊的 Delphi 7 程序具有發送 SMTP 的功能, 功能整合, 需要調用 C# WebService 發送郵件功能,
發現 Delphi 7并不能像 C# 一樣, 添加了 WebService 后就可以直接使用, 而在 Delphi XE 2或5中卻很方便.
可是 Delphi XE 的破解補丁用一段時間失效了, 需要重新安裝系統才能破解.
無奈之下, 只好使用 Delphi 7 . 上網查了一些資料, Delphi 7 調用 WebService 需要多寫幾行代碼.
一、添加 WebService
點擊菜單 File --> New --> Other
選擇 WebServices 的 WSDL Importer, 點擊 OK
輸入 WebService 的地址, 后面加 ?wsdl
點擊 完成 按鈕
到此,WebService 添加完成, 專案會自動增加 service1.pas
二、修改代碼
在 service1.pas 的最下面, 添加以下一行, 其中 Service1Soap 根據實際名稱不同而不同
InvRegistry.RegisterInvokeOptions(TypeInfo(Service1Soap), ioDocument);
添加后的代碼如下:
引用 WebService 需要的組件, 申明變量, 初始化后就可以直接調用了,
完整代碼如下:
program Project2;
{$APPTYPE CONSOLE}
uses
SysUtils,
InvokeRegistry, SOAPHTTPClient, Types, XSBuiltIns,
service1 in 'service1.pas';
var
WebService1: Service1Soap;
mHttpRIO: THTTPRIO;
webservice_result: string;
begin
{ TODO -oUser -cConsole Main : Insert code here }
mHttpRIO := THTTPRIO.Create(nil);
mhttprio.URL := 'http://192.168.1.108:6666/service1.asmx';
mhttprio.HTTPWebNode.UseUTF8InHeader := true;
mhttprio.Converter.Encoding := 'UTF-8';
Webservice1 := mhttprio as Service1Soap;
//調用
webservice_result := webservice1.SendMail('根據實際需要填寫參數');
end.
調試運行, webservice_result 就是調用webservice返回的結果.