Webservice接口开发

阅读: 评论:0

2024年2月3日发(作者:)

Webservice接口开发

Webservice接口开发

Author:Geloin

目 录

1

2

准备工作................................................................................................................. 1

服务器端................................................................................................................. 1

2.1 主程序 .......................................................................................................... 1

2.2 .................................................................................................. 2

2.3 传值方式 ...................................................................................................... 3

2.4 打包 .............................................................................................................. 4

2.5 发布 .............................................................................................................. 6

3 客户端..................................................................................................................... 8

3.1 导入包 .......................................................................................................... 8

3.2 示例代码 ...................................................................................................... 8

3.3 代码解析 .................................................................................................... 10

3.3.1 设定服务器地址.............................................................................. 10

3.3.2 设定action ...................................................................................... 10

3.3.3 设定要调用的方法名...................................................................... 11

3.3.4 设定客户端控件.............................................................................. 11

3.3.5 设定命名空间.................................................................................. 11

3.3.6 设定需要传送的值.......................................................................... 11

3.3.7 设定返回数据类型.......................................................................... 11

3.3.8 获取返回结果.................................................................................. 12

1 准备工作

至/axis2/下载axis2的bin及war包,分别解压之,在环境变量中添加AXIS2_HOM,将放置到tomcat/webapps目录下,启动tomcat,用浏览器打开localhost:8080/axis2,如下图所示:

2 服务器端

2.1 主程序

服务器端可以是任何一个程序,例如下面的例子:

public class Test {

// 此程序返回一个字符串

public String test1(String arg) {

}

// 此程序返回一个一维数组

public String[] test2(String arg) {

String[] result = new String[]{arg};

return result;

1 / 15

return arg + “测试”;

}

// 当返回值为多维数组时,将之转化为一维数组返回

public String[] test3(String arg) {

String[] result = new String[]{“测试,” + arg};

}

// 当返回值为其它类型,例如自定义类型、Map、List等时,将其序列化(冷冻或腌成咸菜)后返回

public byte[] test4(String arg) {

}

}

Map map = new HashMap();

(“测试”, arg);

rayOutputStream baos = new ByteArrayOutputStream();

ObjectOutputStream oos = new ObjectOutputStream(baos);

bject(map);

return Array();

return result;

2.2

需要在根目录下建立META-INF文件夹,文件夹下放置和文件,最好自己写好文件,不然导出的时候可能会出错。

文件的内容如下:

<?xml version="1.0" encoding="UTF-8"?>

2 / 15

class="sageReceiver" />

class="sageReceiver" />

class="sageReceiver" />

class="sageReceiver" />

2.3 传值方式

上文中提及到传值方式,即:

class="sageReceiver" />片段,在AXIS2中有两种传值方式,分别为:

sageReceiver:即需要客户端传参数过来,又返回值。

nlyMessageReceiver:需要客户端传参数过来,但不返回值。

3 / 15

2.4 打包

在Eclipse下右键点击项目名,Export..,JAR file,在JAR File Specification进行如下勾选:

注意,文件名的后缀为aar,Next后进行如下勾选:

4 / 15

Next后进行如下勾选:

5 / 15

注意,请写好文件,如下所示:

Manifest-Version: 1.0

Class-Path: lib/

2.5 发布

用浏览器打开localhost:8080/axis2,如下图所示:

6 / 15

点击Administration,登录,用户名为admin,密码为axis2,如下图所示:

点击upload Service,如下图所示:

7 / 15

按照提示上传aar文件即可,其中,aar文件是2.4中打包时得到的文件。

3 客户端

3.1 导入包

需要使用的包如下图所示:

3.2 示例代码

import的包如下图所示:

8 / 15

代码如下图所示:

// 服务器地址

String serviceAddress = "localhost:8888/axis2/services/testService";

// 服务器对应的action,如果不知道的话随便写,系统运行时会提示你的

String action = "";

// 方法名

String methodName = "test1";

// 客户端控件

RPCServiceClient serviceClient = new RPCServiceClient();

Options options = ions();

EndpointReference targetEPR = new EndpointReference(serviceAddress);

(targetEPR);

// 命名空间

QName qName = new QName(action, methodName);

// 需要传递给服务器的值

Object[] values = new Object[]{license};

// 返回值的类型,基本类型为

Class<?>[] returnType = new Class[]{};

// 返回结果

Object[] result = Blocking(qName, values, returnType);

9 / 15

return result[0].toString();

3.3 代码解析

3.3.1 设定服务器地址

首先,你需要设定webservice服务器的地址,即:

String serviceAddress = "localhost:8888/axis2/services/testService";

登际localhost:8080/axis2,点击Services,如下图所示:

如上图所示,会列出所有webservice服务的地址及能够使用的方法。

3.3.2 设定action

如以下代码所示:

10 / 15

String action = "";

action的值可以随便写,如有错误,程序在执行过程中会给予提示。

3.3.3 设定要调用的方法名

如以下代码所示:

String methodName = "test1";

这里指的是要调用服务器上的哪个方法。

3.3.4 设定客户端控件

如以下代码所示:

RPCServiceClient serviceClient = new RPCServiceClient();

Options options = ions();

EndpointReference targetEPR = new EndpointReference(serviceAddress);

(targetEPR);

这一部分为公用代码,直接拷贝即可。

3.3.5 设定命名空间

如以下代码所示:

QName qName = new QName(action, methodName);

这一部分为公用代码,直接拷贝即可。

3.3.6 设定需要传送的值

如以下代码所示:

Object[] values = new Object[]{license};

这里设定的是要传递给服务器的参数。

3.3.7 设定返回数据类型

如以下代码所示:

Class<?>[] returnType = new Class[]{};

这里设定的是服务器返回给客户端的值的类型,分为以下几种:

11 / 15

(1) 简单类型的参数,如String、int、long、double等待,使用以下代码:

Class<?>[] returnType = new Class[]{ };

Class<?>[] returnType = new Class[]{ };

Class<?>[] returnType = new Class[]{};

(2) 一维数组和二维数组,使用以下代码:

Class<?>[] returnType = new Class[]{String[].class};

(3) 复杂数据类型,即通过序列化的数据类型,使用以下代码:

Class<?>[] returnType = new Class[]{byte[].class};

3.3.8 获取返回结果

如以下代码所示:

Object[] result = Blocking(qName, values, returnType);

return result[0].toString();

获取服务器返回的结果,有以下几种情况:

(1) 简单数据类型,使用以下代码:

Object[] result = Blocking(qName, values, returnType);

String result = "";

if (null != obj && > 0) {

result = obj[0].toString();

} else {

}

(2) 一维数组,使用以下代码:

Object[] obj = Blocking(opQName, values, returnType);

String[] result = null;

if (null != obj && > 0) {

result = (String[]) obj[0];

result = null;

} else {

}

12 / 15

result = null;

(3) 多维数组,使用以下代码:

Object[] obj = Blocking(qName, values, returnType);

String[] result = null;

if (null != obj && > 0) {

result = (String[]) obj[0];

// 分解多维数组

for (String s : result) {

String[] array = (",");

for (String ss : array) {

("<" + ss + "> ");

}

n();

}

} else {

result = null;

}

(4) 复杂对象,传递序列化后的值,需要解冻(回鲜):

Object[] obj = Blocking(qName, values, returnType);

Map result = null;

if (null != obj && > 0) {

byte[] buffer = (byte[]) obj[0];

ObjectInputStream ois = new ObjectInputStream(new

ByteArrayInputStream(buffer));

result = (Map) ject();

} else {

result = null;

}

13 / 15

Webservice接口开发

本文发布于:2024-02-03 15:11:32,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170694429250724.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:代码   设定   需要   返回   文件   程序   类型   使用
留言与评论(共有 0 条评论)
   
验证码:
排行榜

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23