一.环境搭建
jdk和tomcat的安装和配置我在这里不进行行介绍了。说明一点我的tomcat是安装在D:"tomcat,设定端口是8099。
安装Axis
1.可以从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和两个button,button的name命名为
btnadd和btnsubtract,caption命名为add和subtract。
再file->new->other,选择webservice里的WSDL importer
在search UDDI..里选择前面我们保存的那个xml文件,点击next最后finish
全部保存,我们发现delphi的工程中多了test1.pas
打开发现有这样一段接口申明:
|
那我们可以直接调用这个接口了,这时候我们回到界面,从delphi的webservices面版中托放一个soap到form上。
最后我们可以完成我们的代码了:
1.在uses里添加test1因为我们要引用这个单元。
2.添加全局变量t1:test;(t1是一个test接口)
3.为两个button添加click事件
|
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 + p2+10;
}
再运行一下你的客户端程序看看。
四.注:unit1的所有代码
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Rio, SOAPHTTPClient,Test1;
type
TForm1 = 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;
var
Form1: TForm1;
t1:test;
implementation
{$R *.dfm}
//这里是为了让 两个edit只能输入数字,edit1的onkeypress直接调用这个就可以了。
procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
if key in ['0'..'9']=false then
key:=#0;
end;
procedure TForm1.btnaddClick(Sender: TObject);
var
i,j,z:integer;
begin
i:=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);
var
i,j,z:integer;
begin
i:=strtoint(edit1.Text);
j:=strtoint(edit2.Text);
t1:=(HttPRIO1 as test);
z:=t1.subtract(i,j);
t1._Release;
showmessage(inttostr(z));
end;
end.