四种客户端调用WEBSERVICE
王凡
Woshiwangfan@gmail.com
Wf141732@sohu.com
2009-08-22
目录
21.
文档概述
1.1.
相关文档
2
2.
SERVER端
3
2.1.
代码
3
2.2.
SERVER端生成Wsdl
4
2.3.
服务端安全性设置
6
3.
VB调用
7
3.1.
准备
7
4.
.net调用
10
4.1.
实现过程
10
5.
Axis2调用
11
5.1.
Axis2的安装
11
5.2.
Axis2调用过程
11
6.
Weblogic调用
15
6.1.
Weblogic
15
7.
已解决及未解决的问
题
快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题
18
7.1.
未解决的问题
18
7.2.
已解决的问题
18
1. 文档概述
1.1. 相关文档
《Web Services开发教程.doc》
2. SERVER端
这个主要是用weblogic的workshop开发,用weblogic开发webservice具体可见沈辉的《Web Services开发教程.doc》,这里 主要是讲客户端调用,所以服务端只作罗列。
2.1. 代码
在weblogic中构建webservice可以见《Web Services开发教程.doc》,用于本次测试的Server代码如下:
Model:
package cn.com.tsingtao.logistics.model;
import java.io.Serializable;
public class test implements Serializable {
private static final long serialVersionUID = 1L;
private String NAME;
private int AGE;
public void setNAME(String name)
{
NAME=name;
}
public void setAGE(int age)
{
AGE=age;
}
public String getNAME()
{
return NAME;
}
public int getAGE()
{
return AGE;
}
}
Service代码如下:
public cn.com.tsingtao.logistics.model.test[] hello(String NAME,int AGE) {
cn.com.tsingtao.logistics.model.test[] t=new
cn.com.tsingtao.logistics.model.test[10];
for(int i=0;i<10;i++)
{
t[i] = new cn.com.tsingtao.logistics.model.test();
t[i].setNAME(NAME+i);
t[i].setAGE(AGE+i);
}
return t;
}
2.2. SERVER端生成Wsdl
在Server端生成的wsd如下:
2.3. 服务端安全性设置
这个是根据沈辉的《Web Services开发教程.doc》设置的,不作详细说明,只作罗列
2.3.1. 在weblogic中新建用户和用户组
2.3.2. 在webapp中配置安全性
在web-info\web.xml中添加红色部分
BSM
index.html
index.htm
index.jsp
default.html
default.htm
default.jsp
wsuser
Secure Area
/*
GET
POST
wsuser
BASIC
myrealm
在web-info\weblogic.xml中添加红色部分
10.3
BSM
wsuser
wsgroup
重新发布后在浏览器中就可以看到了
3. VB调用
3.1. 准备
使用vb6.0调用webservice需要用到SOAP Toolkit,我们选用的是SOAP Toolkit3.0版本。
3.1.1. 插件下载
到http://www.microsoft.com/downloads/details.aspx?familyid=c943c0dd-ceec-4088-9753-86f052ec8450&displaylang=en下载SOAP Toolkit 3.0,直接安装。
3.1.2. VB中添加引用
在VB中添加对插件的引用Project\References\
添加如下5个引用
3.1.3. 程序代码
VB调用的程序代码如下:
Private Sub Command3_Click()
Dim Serializer As SoapSerializer30
Dim reader As SoapReader30
Dim Connector As SoapConnector30
Dim strParam As String
strParam = "王凡"
'namespace
Const SoapAction = "http://cn/com/tsingtao/logistics/service"
'wsdl地址
Const END_POINT_URL = "http://localhost:7001/BSM/test?WSDL"
'新建一个connector对象
Set Connector = New HttpConnector30
Connector.Property("EndPointURL") = END_POINT_URL
Connector.Connect
Connector.Property("SoapAction") = SoapAction
‘在weblogic中我们使用的是basic认证,在这里添加用户名和密码
Connector.Property("AuthPassword") = "wsuserwsuser"
Connector.Property("AuthUser") = "wsuser"
Connector.Property("WinHTTPAuthScheme") = 1
Connector.BeginMessage
Set Serializer = New SoapSerializer30
Serializer.Init Connector.InputStream
Serializer.startEnvelope
Serializer.startBody
‘在这里添加传入的参数,有两个参数NAME和AGE,前面的是方法名,后面的为namespace,在wsdl中标红色的部分。
Serializer.startElement "hello", "http://cn/com/tsingtao/logistics/service"
Serializer.startElement "NAME"
Serializer.writeString strParam
Serializer.endElement
Serializer.startElement "AGE"
Serializer.writeString 12
Serializer.endElement
Serializer.endElement
Serializer.endBody
Serializer.endEnvelope
Serializer.Finished
Connector.EndMessage
‘reader读入返回的xml对象
Set reader = New SoapReader30
reader.Load Connector.OutputStream
If Not reader.Fault Is Nothing Then
MsgBox reader.faultstring.Text, vbExclamation
Else
Dim results As Variant
results = getResult(reader)
For i = 0 To UBound(results) - 1
MsgBox "Name:" + results(i).Item("NAME") + "," + "Age:" + results(i).Item("AGE")
Next i
End If
End Sub
‘这个函数将返回的对象组合成一个array
Function getResult(reader As SoapReader30) As Variant
Dim arr() As Object
ReDim arr(reader.RPCResult.childNodes.length)
Dim dict
For i = 0 To reader.RPCResult.childNodes.length - 1
Set dict = CreateObject("Scripting.Dictionary")
For j = 0 To reader.RPCResult.childNodes(i).childNodes.length - 1
dict.Add reader.RPCResult.childNodes(i).childNodes(j).baseName, reader.RPCResult.childNodes(i).childNodes(j).Text
Next j
Set arr(i) = dict
Next i
getResult = arr
4. End Function
5. .net调用
5.1. 实现过程
5.1.1. 在.net中添加webservice引用
在Solutions Explorer\project_name\Web References
5.1.2. 调用代码
.net的代码很简单
testService.testService request=new WebServiceT.testService.testService();
CredentialCache cache = new CredentialCache();
cache.Add(new Uri(request.Url), "Basic", new NetworkCredential("wsuser", "wsuserwsuser"));
request.Credentials = cache;
testService.test[] ts=request.hello("wangfan",12);
for(int i=0;i
/server/lib目录下,解压缩wseeclient.zip到一个目录中
2. 选择项目,右键打开属性对话框,在ClassPath标签页中,删除"WebLogic System Library"
3. 单击"Add External Jars",将第一步解压的所有jar都添加进行
4. 添加ant的类库到项目中
5. 重新运行上面的客户端调用代码,此时执行就能正确
7.1.3. 代码实现
HttpTransportInfo info = new HttpTransportInfo();
info.setUsername("wsuser".getBytes());
info.setPassword("wsuserwsuser".getBytes());
TestService_Impl im=new TestService_Impl("http://127.0.0.1:7001/BSM/test?WSDL",info);
Test_Stub t=(Test_Stub) im.getTestSoapPort();
ArrayOftest_Literal tl=t.hello("wangfanwf", 12);
Test[] ts=tl.getTest();
for(int i=0;i
本文档为【四种方式调用webservice】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。