首页 四种方式调用webservice

四种方式调用webservice

举报
开通vip

四种方式调用webservice四种客户端调用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. Webl...

四种方式调用webservice
四种客户端调用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,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_104319
暂无简介~
格式:doc
大小:428KB
软件:Word
页数:0
分类:互联网
上传时间:2011-12-05
浏览量:14