admin 管理员组

文章数量: 1086019


2024年3月1日发(作者:median函数的使用方法)

四种客户端调用WEBSERVICE

王凡

Woshiwangfan@

Wf141732@

2009-08-22

File Ref:

目录

1.

文档概述 ..................................................................................................................... 2

1.1.

相关文档 .............................................................................................................. 2

2.

SERVER端 .................................................................................................................. 3

2.1.

代码 ...................................................................................................................... 3

2.2.

SERVER端生成Wsdl .......................................................................................... 4

2.3.

服务端安全性设置 .............................................................................................. 6

3.

VB调用 ...................................................................................................................... 13

3.1.

准备 .................................................................................................................... 13

4.

.net调用 .................................................................................................................... 16

4.1.

实现过程 ............................................................................................................ 16

5.

Axis2调用 ................................................................................................................. 17

5.1.

Axis2的安装 ...................................................................................................... 17

5.2.

Axis2调用过程 .................................................................................................. 17

6.

Weblogic调用........................................................................................................... 21

6.1.

Weblogic ........................................................................................................... 21

7.

已解决及未解决的问题 ........................................................... 错误!未定义书签。

7.1.

未解决的问题 .................................................................... 错误!未定义书签。

7.2.

已解决的问题 .................................................................... 错误!未定义书签。

文档概述

1. 文档概述

1.1. 相关文档

《Web Services开发教程.doc》

File Ref:

文档概述

2. SERVER端

这个主要是用weblogic的workshop开发,用weblogic开发webservice具体可见沈辉的《Web Services开发教程.doc》,这里 主要是讲客户端调用,所以服务端只作罗列。

2.1. 代码

在weblogic中构建webservice可以见《Web Services开发教程.doc》,用于本次测试的File Ref:

Server代码如下:

Model:

package ;

import izable;

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 [] hello(String NAME,int AGE) {

[10];

[] t=new

SERVER端

}

for(int i=0;i<10;i++)

{

}

return t;

t[i] = new ();

t[i].setNAME(NAME+i);

t[i].setAGE(AGE+i);

2.2. SERVER端生成Wsdl

在Server端生成的wsd如下:

targetNamespace="cn/com/tsingtao/logistics/service" xmlns=""

xmlns:s0="/wsdl/"

xmlns:s1="cn/com/tsingtao/logistics/service"

xmlns:s2="/wsdl/soap/">

targetNamespace="java:"

xmlns:s0="/wsdl/"

xmlns:s1="cn/com/tsingtao/logistics/service"

xmlns:s2="/wsdl/soap/"

xmlns:xs="/2001/XMLSchema">

nillable="true" type="java:test" xmlns:java="java:"/>

xmlns:java="java:"/>

File Ref:

SERVER端

File Ref:

targetNamespace="cn/com/tsingtao/logistics/service"

xmlns:s0="/wsdl/"

xmlns:s1="cn/com/tsingtao/logistics/service"

xmlns:s2="/wsdl/soap/"

xmlns:xs="/2001/XMLSchema">

xmlns:java="java:"/>

SERVER端

transport="/soap/http"/>

2.3. 服务端安全性设置

这个是根据沈辉的《Web Services开发教程.doc》设置的,不作详细说明,只作罗列

2.3.1. 在weblogic中新建用户和用户组

File Ref:

SERVER端

File Ref:

SERVER端

File Ref:

SERVER端

File Ref:

SERVER端

File Ref:

2.3.2. 在webapp中配置安全性

在中添加红色部分

xmlns="/xml/ns/j2ee"

xmlns:xsi="/2001/XMLSchema-instance"

/xml/ns/j2ee/web-app_2_">

xsi:schemaLocation="/xml/ns/j2ee

BSM

wsuser

SERVER端

File Ref:

Secure Area

/*

GET

POST

wsuser

BASIC

myrealm

在中添加红色部分

xmlns:wls="/ns/weblogic/weblogic-web-app"

xmlns:xsi="/2001/XMLSchema-instance"

/xml/ns/javaee/web-app_2_

xsi:schemaLocation="/xml/ns/javaee

/ns/weblogic/weblogic-web-app

/ns/weblogic/weblogic-web-app/1.0/">

10.3

BSM

wsuser

wsgroup

重新发布后在浏览器中就可以看到了

SERVER端

File Ref:

SERVER端

3. VB调用

3.1. 准备

File Ref:

使用vb6.0调用webservice需要用到SOAP Toolkit,我们选用的是SOAP Toolkit3.0版本。

3.1.1. 插件下载

到/downloads/?familyid=c943c0dd-ceec-4088-9753-86f052ec8450&displaylang=en下载SOAP Toolkit 3.0,直接安装。

3.1.2. VB中添加引用

在VB中添加对插件的引用ProjectReferences

添加如下5个引用

VB调用

3.1.3. 程序代码

VB调用的程序代码如下:

File Ref:

Private Sub Command3_Click()

Dim Serializer As SoapSerializer30

Dim reader As SoapReader30

Dim Connector As SoapConnector30

Dim strParam As String

strParam = "王凡"

'namespace

Const SoapAction = "cn/com/tsingtao/logistics/service"

'wsdl地址

Const END_POINT_URL = "localhost:7001/BSM/test?WSDL"

'新建一个connector对象

Set Connector = New HttpConnector30

ty("EndPointURL") = END_POINT_URL

t

ty("SoapAction") = SoapAction

‘在weblogic中我们使用的是basic认证,在这里添加用户名和密码

ty("AuthPassword") = "wsuserwsuser"

ty("AuthUser") = "wsuser"

ty("WinHTTPAuthScheme") = 1

essage

Set Serializer = New SoapSerializer30

tream

nvelope

ody

‘在这里添加传入的参数,有两个参数NAME和AGE,前面的是方法名,后面的为namespace,在wsdl中标红色的部分。

lement "hello", "cn/com/tsingtao/logistics/service"

lement "NAME"

tring strParam

ment

lement "AGE"

tring 12

ment

ment

y

elope

ed

VB调用

sage

File Ref:

‘reader读入返回的xml对象

Set reader = New SoapReader30

Stream

If Not Is Nothing Then

MsgBox , 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()

Dim dict

For i = 0 To - 1

Set dict = CreateObject("nary")

For j = 0 To odes(i). - 1

odes(i).childNodes(j).baseName,

odes(i).childNodes(j).Text

Next j

Set arr(i) = dict

Next i

getResult = arr

End Function

VB调用

4. .net调用

4.1. 实现过程

File Ref:

4.1.1. 在.net中添加webservice引用

在Solutions Explorerproject_nameWeb References

4.1.2. 调用代码

.net的代码很简单

rvice request=new rvice();

CredentialCache cache = new CredentialCache();

(new Uri(), "Basic", new NetworkCredential("wsuser",

"wsuserwsuser"));

tials = cache;

[] ts=("wangfan",12);

for(int i=0;i<;i++)

{

("Name:"+ts[i].NAME+"Age:"+ts[i].AGE);

}

.net调用

5. Axis2调用

5.1. Axis2的安装

5.2. Axis2调用过程

File Ref:

5.1.1. 在Eclipse中添加axis2的插件

在eclipse中添加axis2的生成客户端代码的工具,具体可见《Web Services开发教程.doc》

5.2.1. 运行向导生成客户端代码

在浏览器中将localhost:7001/BSM/test?WSDL另存为一个wsdl文件

Axis2调用

File Ref:

在第一次进入这个节目的时候会报红,cancel向导重新打开向导。

Axis2调用

File Ref:

5.2.2. 代码实现

在生成的TestServiceTest类文件中

public void testhello() throws ion {

TestServiceStub stub = new TestServiceStub();

getTestObject();

request = ()

// TODO : Fill in the hello4 here

E("wangfan");

(12);

esponse r=(request);

ftest_literal tl=_return();

[] ts=t();

for(int i=0;i<;i++)

{

Axis2调用

File Ref:

("Name:"+ts[i].getNAME()+";"+"Age:"+ts[i].getAGE()+"n");

}

//assertNotNull((request));

}

运行报错

ult: Transport error: 401 Error: Unauthorized

5.2.3. Axis2的安全认证设置

单击进入hello方法,找到_operationClient

public esponse hello(

hello0)

throws Exception

{

eContext _messageContext = null;

try {

_serviceClient .createClient(_operations[0].getName());

ionClient _operationClient =

_ions().setAction("""");

_ions().setExceptionToBeThrownOnSOAPFault(rue);

basicAuthentication = new ticator();

ticator

rname("wsuser");

sword("wsuserwsuser");

_ions().setProperty(

TICATE, basicAuthentication);

红色部分为新增的认证信息 。

Axis2调用

6. Weblogic调用

6.1. Weblogic

File Ref:

具体可以见《Web Services开发教程.doc》

6.1.1. 生成jar

在服务器的代码中生存wsdl

将wsdl生成jar

Weblogic调用

File Ref:

6.1.2. 在新建的项目中添加jar引用

按以下步骤进行:

1. 在/server/lib目录下,解压缩到一个目录中

2. 选择项目,右键打开属性对话框,在ClassPath标签页中,删除"WebLogic System

Library"

3. 单击"Add External Jars",将第一步解压的所有jar都添加进行

4. 添加ant的类库到项目中

5. 重新运行上面的客户端调用代码,此时执行就能正确

6.1.3. 代码实现

HttpTransportInfo info = new HttpTransportInfo();

rname("wsuser".getBytes());

sword("wsuserwsuser".getBytes());

TestService_Impl("127.0.0.1:7001/BSM/test?WSDL",info);

TestService_Impl im=new

Weblogic调用

Test_Stub t=(Test_Stub) tSoapPort();

ArrayOftest_Literal tl=("wangfanwf", 12);

Test[] ts=t();

for(int i=0;i<;i++)

{

("Name:"+ts[i].getNAME()+";"+"Age:"+ts[i].getAGE()+"n");

File Ref:

}

Weblogic调用


本文标签: 添加 调用 代码