中明建投建设集团 网站,小伙做网色网站,建好网站是不是还得维护,h5微网站建设多少钱Webservice现在已经不是什么新技术了#xff0c;用java建立webservice是快捷的#xff0c;但是用java在制作客户端的感觉上总是不如 Delphi的(个人感觉#xff0c;java高手们不要笑话我)#xff0c;那我们就用java实现webservice的服务端程序#xff0c;delphi制作客户端。…Webservice现在已经不是什么新技术了用java建立webservice是快捷的但是用java在制作客户端的感觉上总是不如 Delphi的(个人感觉java高手们不要笑话我)那我们就用java实现webservice的服务端程序delphi制作客户端。一环境搭建jdk和tomcat的安装和配置我在这里不进行行介绍了。说明一点我的tomcat是安装在D:\tomcat,设定端口是8099。安装Axis1可以从http://ws.apache.org/axis/下载axis的最新版本我使用的是axis1.2。2解压缩axis-bin-1_2beta.zip将axis-1_2beta目录中webapps下的axis目录全部拷贝到tomcat的安装目录中webapps下。3将axis\lib中的所有jar文件都添加到classpath系统变量中。注(用户需根据自己的安装路径进行更改).;d:\tomcat\webapps\axis\WEBINF\lib\axis.jar;d:\tomcat\webapps\axis\WEB-INF\lib\saaj.jar;d:\tomcat\webapps\axis\WEB-INF\lib\commons-logging.jar;d:\tomcat\webapps\axis\WEB-INF\lib\commons-discovery.jar;d:\tomcat\webapps\axis\WEB-INF\lib\wsdl4j.jar;d:\tomcat\webapps\axis\WEBINF\lib\jaxrpc.jar;4启动tomcat访问http://cbf107:8099/axis/index.html(这里使用的主机名和端口号和使用的tomcat所配置一致)。可以见到如下页面二Web Service服务端开发写一个java小程序public class Test{public int add(int p1, int p2) {return p1 p2;}public int subtract(int p1, int p2) {return p1 - p2;}}在D:\Tomcat\webapps\axis 目录下新建一个test文件夹将它保存在里面注意后缀名改为jws也就是Test.jws 。在浏览器里访问http://cbf107:8099/axis/test/Test.jws可以看到点击“Click to see the WSDL”出现将这页另存为xml文档(我们在使用delphi制作客户端的时候会使用)三delphi实现Web Service客户端开发打开delphi新建工程在form上放置两个edit和两个buttonbutton的name命名为btnadd和btnsubtract,caption命名为add和subtract。再file-new-other选择webservice里的WSDL importer在search UDDI..里选择前面我们保存的那个xml文件点击next最后finish 全部保存我们发现delphi的工程中多了test1.pas打开发现有这样一段接口申明Test interface(IInvokable)[‘{52882FF0-46E2-6644-A77B-CE714D4CBFD5}‘]function add(const p1: Integer; const p2: Integer): Integer; stdcall;function subtract(const p1: Integer; const p2: Integer): Integer; stdcall;end;那我们可以直接调用这个接口了这时候我们回到界面从delphi的webservices面版中托放一个soap到form上。设置属性如图最后我们可以完成我们的代码了1.在uses里添加test1因为我们要引用这个单元。2.添加全局变量t1:test;(t1是一个test接口)3.为两个button添加click事件procedure TForm1.btnaddClick(Sender: TObject);vari,j,z:integer;begini:strtoint(edit1.Text);j:strtoint(edit2.Text);t1:(HttPRIO1 as test);z:t1.add(i,j);t1._Release;showmessage(inttostr(z));end;procedure TForm1.btnsubstractClick(Sender: TObject);vari,j,z:integer;begini:strtoint(edit1.Text);j:strtoint(edit2.Text);t1:(HttPRIO1 as test);z:t1.subtract(i,j);t1._Release;showmessage(inttostr(z));end;4.F9运行程序进行测试看我们有用delphi实现了java写的那段程序不是吗。5.也许到这里你认为应该已经完成了没错不过对webservice还不够了解的朋友你再修改一下那个java程序也就是将Test.jws里的这个方法public int add(int p1, int p2) {return p1 p2;}改为public int add(int p1, int p2) {return p1 p210;}再运行一下你的客户端程序看看。四注unit1的所有代码unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls, Rio, SOAPHTTPClient,Test1;typeTForm1 class(TForm)HTTPRIO1: THTTPRIO;Edit1: TEdit;Edit2: TEdit;btnadd: TButton;btnsubstract: TButton;procedure Edit2KeyPress(Sender: TObject; var Key: Char);procedure btnaddClick(Sender: TObject);procedure btnsubstractClick(Sender: TObject);private{ Private declarations }public{ Public declarations }end;varForm1: TForm1;t1:test;implementation{$R *.dfm}//这里是为了让 两个edit只能输入数字edit1的onkeypress直接调用这个就可以了。procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);beginif key in [‘0‘..‘9‘]false thenkey:#0;end;procedure TForm1.btnaddClick(Sender: TObject);vari,j,z:integer;begini:strtoint(edit1.Text);j:strtoint(edit2.Text);t1:(HttPRIO1 as test);z:t1.add(i,j);t1._Release;showmessage(inttostr(z));end;procedure TForm1.btnsubstractClick(Sender: TObject);vari,j,z:integer;begini:strtoint(edit1.Text);j:strtoint(edit2.Text);t1:(HttPRIO1 as test);z:t1.subtract(i,j);t1._Release;showmessage(inttostr(z));end;end.