inttostr java_Delphi和Java实现webservice架构
Webservice現在已經不是什么新技術了,用java建立webservice是快捷的,但是用java在制作客戶端的感覺上總是不如 Delphi的(個人感覺,java高手們不要笑話我),那我們就用java實現webservice的服務端程序,delphi制作客戶端。
一.環境搭建
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
打開發現有這樣一段接口申明:
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);
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;
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.
總結
以上是生活随笔為你收集整理的inttostr java_Delphi和Java实现webservice架构的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PHP 将文字转化mp3文件
- 下一篇: java中udi_Java读取.prop