linux社区爱心援助Linux认证系列教程业界动态站务新闻公司招聘网络学院网址大全LPI专题CISCO专题
设为首页
加入收藏
管理团队
JSP  
JAVA  
PERL  
 您的位置:首页 > 开发语言 > Delphi >
栏目导栏
  php
  JSP
  ASP
  asp.net
  JAVA
  c/c++/c#
  perl
  JavaScript
  Basic
  Delphi
资料搜索
热门文章
·HexToStr函数和StrToHex函数
·Delphi中的进制转换
·delphi轻松设置无边框透明窗体
·delphi第三方控件安装(Ehlib)
·DELPHI组件安装全攻略
·delphi动态创建控件
·开发工具比较Visual C++ VS De
·delphi完整身份证效验程序实例
·delphi中的Format函数详解
·delphi编程获取打印机的打印任
·如何判断文本文件的编码格式
·深入研究Variant数组
·用delphi编写网络游戏的外挂
·Delphi技巧-用户自定义数据类型
·delphi设置控件透明
最新文章
·在应用程序中跟踪MOUSE的坐标
·压缩和修复MS Access 2000文件
·DELPHI 6.0 动画制做
·怎样在Delphi中调用LastError信
·怎样得到主域服务器名称
·怎样利用递归实现删除某一目录
·读出主键下所有项
·如何制作照片底片效果的图像(
·获得Modem的状态
·WebBrowser屏幕滚动的实现,设
·有关字符串处理的小技巧
·Delphi建立键盘鼠标动作纪录与
·Delphi中布尔类型辨析
·DELPHI程序注册码设计
·图形的不规则的Copy
Google
 
Delphi和Java实现webservice架构
[ 作者:  加入时间:2007-11-07 17:48:26  来自:Linux联盟收集整理 ]
Webservice现在已经不是什么新技术了,用java建立webservice是快捷的,但是用java在制作客户端的感觉上总是不如Delphi的(个人感觉,java高手们不要笑话我),那我们就用java实现webservice的服务端程序,delphi制作客户端。HjVLinux联盟
   HjVLinux联盟
    一.环境搭建HjVLinux联盟
    HjVLinux联盟
    jdk和tomcat的安装和配置我在这里不进行行介绍了。说明一点我的tomcat是安装在D:\tomcat,设定端口是8099。 HjVLinux联盟
HjVLinux联盟
HjVLinux联盟
    安装AxisHjVLinux联盟
     1.可以从http://ws.apache.org/axis/下载axis的最新版本,我使用的是axis1.2。HjVLinux联盟
     2.解压缩axis-bin-1_2beta.zip,将axis-1_2beta目录中webapps下的axis目录全部拷贝到tomcat的安装目录中webapps下。HjVLinux联盟
     3.将axis\lib中的所有jar文件都添加到classpath系统变量中。HjVLinux联盟
HjVLinux联盟
     注(用户需根据自己的安装路径进行更改):HjVLinux联盟
     HjVLinux联盟
      .;HjVLinux联盟
      d:\tomcat\webapps\axis\WEBINF\lib\axis.jar;HjVLinux联盟
      d:\tomcat\webapps\axis\WEB-INF\lib\saaj.jar;HjVLinux联盟
      d:\tomcat\webapps\axis\WEB-INF\lib\commons-logging.jar;HjVLinux联盟
      d:\tomcat\webapps\axis\WEB-INF\lib\commons-discovery.jar;HjVLinux联盟
      d:\tomcat\webapps\axis\WEB-INF\lib\wsdl4j.jar;HjVLinux联盟
      d:\tomcat\webapps\axis\WEBINF\lib\jaxrpc.jar;HjVLinux联盟
   HjVLinux联盟
HjVLinux联盟
     4.启动tomcat访问http://cbf107:8099/axis/index.html(这里使用的主机名和端口号和使用的tomcat所配置一致)。HjVLinux联盟
HjVLinux联盟
    二.Web Service服务端开发HjVLinux联盟
  HjVLinux联盟
    写一个java小程序:HjVLinux联盟
HjVLinux联盟
    HjVLinux联盟
     public class Test{HjVLinux联盟
       public int add(int p1, int p2) {HjVLinux联盟
         return p1 + p2;HjVLinux联盟
       }HjVLinux联盟
       public int subtract(int p1, int p2) {HjVLinux联盟
         return p1 - p2;HjVLinux联盟
       }HjVLinux联盟
     }HjVLinux联盟
    HjVLinux联盟
HjVLinux联盟
    在D:\Tomcat\webapps\axis 目录下新建一个test文件夹,将它保存在里面,注意:后缀名改为jws,也就是Test.jws 。HjVLinux联盟
  HjVLinux联盟
    在浏览器里访问:http://cbf107:8099/axis/test/Test.jwsHjVLinux联盟
HjVLinux联盟
   HjVLinux联盟
    点击“Click to see the WSDL”出现HjVLinux联盟
HjVLinux联盟
    将这页另存为xml文档(我们在使用delphi制作客户端的时候会使用)HjVLinux联盟
HjVLinux联盟
     HjVLinux联盟
    三.delphi实现Web Service客户端开发HjVLinux联盟
HjVLinux联盟
    打开delphi新建工程,在form上放置两个edit和两个button,button的name命名为HjVLinux联盟
btnadd和btnsubtract,caption命名为add和subtract。HjVLinux联盟
HjVLinux联盟
    再file->new->other,选择webservice里的WSDL importerHjVLinux联盟
HjVLinux联盟
    在search UDDI..里选择前面我们保存的那个xml文件,点击next最后finishHjVLinux联盟
HjVLinux联盟
    全部保存,我们发现delphi的工程中多了test1.pasHjVLinux联盟
   HjVLinux联盟
HjVLinux联盟
    打开发现有这样一段接口申明:HjVLinux联盟
HjVLinux联盟
HjVLinux联盟
Test = interface(IInvokable)HjVLinux联盟
['{52882FF0-46E2-6644-A77B-CE714D4CBFD5}']HjVLinux联盟
function  add(const p1: Integer; const p2: Integer): Integer; stdcall;HjVLinux联盟
function  subtract(const p1: Integer; const p2: Integer): Integer; stdcall;HjVLinux联盟
end;HjVLinux联盟
    HjVLinux联盟
    那我们可以直接调用这个接口了,这时候我们回到界面,从delphi的webservices面版中托放一个soap到form上。HjVLinux联盟
HjVLinux联盟
     HjVLinux联盟
最后我们可以完成我们的代码了:HjVLinux联盟
    1.在uses里添加test1因为我们要引用这个单元。HjVLinux联盟
    2.添加全局变量t1:test;(t1是一个test接口)HjVLinux联盟
    3.为两个button添加click事件HjVLinux联盟
HjVLinux联盟
HjVLinux联盟
procedure TForm1.btnaddClick(Sender: TObject);HjVLinux联盟
varHjVLinux联盟
i,j,z:integer;HjVLinux联盟
beginHjVLinux联盟
  i:=strtoint(edit1.Text);HjVLinux联盟
  j:=strtoint(edit2.Text);HjVLinux联盟
  t1:=(HttPRIO1 as test);HjVLinux联盟
  z:=t1.add(i,j);HjVLinux联盟
  t1._Release;HjVLinux联盟
  showmessage(inttostr(z));HjVLinux联盟
end; HjVLinux联盟
HjVLinux联盟
HjVLinux联盟
procedure TForm1.btnsubstractClick(Sender: TObject);HjVLinux联盟
varHjVLinux联盟
i,j,z:integer;HjVLinux联盟
beginHjVLinux联盟
  i:=strtoint(edit1.Text);HjVLinux联盟
  j:=strtoint(edit2.Text);HjVLinux联盟
  t1:=(HttPRIO1 as test);HjVLinux联盟
  z:=t1.subtract(i,j);HjVLinux联盟
  t1._Release;HjVLinux联盟
  showmessage(inttostr(z));HjVLinux联盟
end;HjVLinux联盟
HjVLinux联盟
HjVLinux联盟
    4.F9运行程序进行测试HjVLinux联盟
    HjVLinux联盟
     HjVLinux联盟
HjVLinux联盟
     HjVLinux联盟
HjVLinux联盟
    看我们有用delphi实现了java写的那段程序,不是吗。HjVLinux联盟
HjVLinux联盟
    5.也许到这里你认为应该已经完成了,没错!不过对webservice还不够了解的HjVLinux联盟
  朋友你再修改一下那个java程序,也就是将Test.jws里的这个方法 HjVLinux联盟
HjVLinux联盟
      public int add(int p1, int p2) {HjVLinux联盟
        return p1 + p2;HjVLinux联盟
      }HjVLinux联盟
HjVLinux联盟
      改为HjVLinux联盟
HjVLinux联盟
      public int add(int p1, int p2) {HjVLinux联盟
        return p1 + p2+10;HjVLinux联盟
      }HjVLinux联盟
HjVLinux联盟
    再运行一下你的客户端程序看看。HjVLinux联盟
HjVLinux联盟
    四.注:unit1的所有代码HjVLinux联盟
HjVLinux联盟
HjVLinux联盟
unit Unit1;HjVLinux联盟
HjVLinux联盟
interfaceHjVLinux联盟
HjVLinux联盟
usesHjVLinux联盟
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,HjVLinux联盟
Dialogs, StdCtrls, Rio, SOAPHTTPClient,Test1;HjVLinux联盟
HjVLinux联盟
typeHjVLinux联盟
TForm1 = class(TForm)HjVLinux联盟
HTTPRIO1: THTTPRIO;HjVLinux联盟
Edit1: TEdit;HjVLinux联盟
Edit2: TEdit;HjVLinux联盟
btnadd: TButton;HjVLinux联盟
btnsubstract: TButton;HjVLinux联盟
procedure Edit2KeyPress(Sender: TObject; var Key: Char);HjVLinux联盟
procedure btnaddClick(Sender: TObject);HjVLinux联盟
procedure btnsubstractClick(Sender: TObject);HjVLinux联盟
privateHjVLinux联盟
{ Private declarations }HjVLinux联盟
publicHjVLinux联盟
{ Public declarations }HjVLinux联盟
end;HjVLinux联盟
HjVLinux联盟
varHjVLinux联盟
Form1: TForm1;HjVLinux联盟
t1:test;HjVLinux联盟
HjVLinux联盟
implementationHjVLinux联盟
HjVLinux联盟
{$R *.dfm}HjVLinux联盟
HjVLinux联盟
HjVLinux联盟
//这里是为了让 两个edit只能输入数字,edit1的onkeypress直接调用这个就可以了。HjVLinux联盟
    procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char); HjVLinux联盟
beginHjVLinux联盟
  if key in ['0'..'9']=false thenHjVLinux联盟
  key:=#0;HjVLinux联盟
end;HjVLinux联盟
HjVLinux联盟
procedure TForm1.btnaddClick(Sender: TObject);HjVLinux联盟
varHjVLinux联盟
i,j,z:integer;HjVLinux联盟
beginHjVLinux联盟
  i:=strtoint(edit1.Text);HjVLinux联盟
  j:=strtoint(edit2.Text);HjVLinux联盟
  t1:=(HttPRIO1 as test);HjVLinux联盟
  z:=t1.add(i,j);HjVLinux联盟
  t1._Release;HjVLinux联盟
  showmessage(inttostr(z));HjVLinux联盟
end;HjVLinux联盟
HjVLinux联盟
procedure TForm1.btnsubstractClick(Sender: TObject);HjVLinux联盟
varHjVLinux联盟
i,j,z:integer;HjVLinux联盟
beginHjVLinux联盟
  i:=strtoint(edit1.Text);HjVLinux联盟
  j:=strtoint(edit2.Text);HjVLinux联盟
  t1:=(HttPRIO1 as test);HjVLinux联盟
  z:=t1.subtract(i,j);HjVLinux联盟
  t1._Release;HjVLinux联盟
  showmessage(inttostr(z));HjVLinux联盟
end;HjVLinux联盟
HjVLinux联盟
end.
HjVLinux联盟
Linux联盟收集整理 ,转贴请标明原始链接,如有任何疑问欢迎来本站Linux论坛讨论
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
 ·delphi中的Format函数详解  (2007-11-07 17:47:25)
 ·Delphi中使用原生ADO控制数据库  (2007-11-07 17:45:49)
 ·Delphi存取图像完整解决方案  (2007-11-07 17:45:07)
 ·如何使用Delphi设计强大的服务器程序  (2007-11-07 17:00:52)
 ·delphi实现文字统计编程  (2007-11-07 16:59:49)
 ·delphi开发设计图文并茂的报表的组件  (2007-11-07 16:59:02)
 ·用Delphi编写涂鸦桌面的小程序  (2007-11-06 17:30:43)
 ·delphi取IE中地址栏中的URL  (2007-11-06 17:27:47)
 ·delphi用CANVAS实现特技显示  (2007-11-06 17:26:11)
 ·delphi利用流制作可执行电子贺卡  (2007-11-06 17:24:02)