加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

WebService 开发 XFire 传递java对象

发布时间:2020-12-17 00:33:34 所属栏目:安全 来源:网络整理
导读:1、当 WebService? 服务器端传过来的是简单的字符串时,我们直接取值就行。但如果传过来的是一个 Javabean? 对象时,直接取值的话会无法正常解析。这时我们在获取对象,得到对象的属性时,需要使用 ? getValue() 来获取属性的值。 ? server_xfireClient ?cli

1、当WebService?服务器端传过来的是简单的字符串时,我们直接取值就行。但如果传过来的是一个Javabean?对象时,直接取值的话会无法正常解析。这时我们在获取对象,得到对象的属性时,需要使用? getValue()来获取属性的值。

?

server_xfireClient?client?=?new?server_xfireClient();

server_xfirePortType?service?=?client.getserver_xfireHttpPort();

User?user?=?service.getUserInfo();? // 执行后WebService服务器返回User 对象

?/*

WebService?服务器端传过来的是简单的字符串时,我们直接取值就行。但如果传过来的是一个Javabean?对象时,直接取值的话会无法正常解析。这时我们在获取对象,得到对象的属性时,需要使用? getValue()来获取属性的值。

?

(1、当我们直接取出对象属性的值时:

?System.out.println("user--name:"?+?user.getName()?+?"==age:"+?user.getAge());

输出打印值:

--------------------------------------------------------------------------------------------------------------------------------------------

user--name:javax.xml.bind.JAXBElement@ff2413==age:javax.xml.bind.JAXBElement@9980d5

--------------------------------------------------------------------------------------------------------------------------------------------

?

(2、使用getValue()来获取属性的值:

?System.out.println("user--name:"?+?user.getName()?.getValue()+?"==age:"+?user.getAge().getValue());

输出打印值:

--------------------------------------------------------------------------------------------------------------------------------------------

user--name:lsxy==age:23?

--------------------------------------------------------------------------------------------------------------------------------------------

*/

?

?

2、当客户端传递字符串给服务器端时,可以直接传递。但如果将javabean?对象传递给服务器端时就要使用ObjectFactory?来构建对象了,不然也会出现服务器端无法正常解析的现象。

ObjectFactory?factory?=?new?ObjectFactory();

User?u?=?factory.createUser();

u.setName(factory.createUserName("EE"));

u.setAge(factory.createUserAge("27"));

service.addUser(u);

或者

ObjectFactory f = new ObjectFactory();
?User uu = new User();
?uu.setName(f.createUserName("QQ"));
?uu.setAge(f.createUserAge("24"));

?service.addUser(u);

?

我们可以发现User 对象的生成可以用WebService客户端自动生成的ObjectFactory?去构建也可以使用自动生成的User 直接new。

但user 对象的属性值却必须使用ObjectFactory?去创建。

查看WebService 自动生成的客户端代码中的User对象类中可以看到如下代码:?

public void setName(JAXBElement<String> value) {
??????? this.name = ((JAXBElement<String> ) value);
?}

setName 方法的中的参数并不是简单的字符串。

?

?

3、当客户端传递List 对象给服务器端时,也需要使用ObjectFactory? 去构建数组对象。

ObjectFactory?of?=?new?ObjectFactory();

User?u1?=?new?User();

u1.setName(of.createUserName("AA"));

u1.setAge(of.createUserAge("11"));

User?u2?=?new?User();

u2.setName(of.createUserName("BB"));

u2.setAge(of.createUserAge("22"));

User?u3?=?new?User();

u3.setName(of.createUserName("CC"));

u3.setAge(of.createUserAge("33"));

?

ArrayOfUser?aou?=?of.createArrayOfUser();

aou.getUser().add(u1);

aou.getUser().add(u2);

aou.getUser().add(u3);

String?usersString?=?service.addUsers(aou);? //传递数组对象给服务器端

/*?也可以直接使用对象定义数组?*/

//?ArrayOfUser?aou?=?new?ArrayOfUser();

//?aou.getUser().add(u1);

//?aou.getUser().add(u2);

//?aou.getUser().add(u3);

//?String?usersString=service.addUsers(aou);

?

在进行WebService 的客户端开发工程中,有一个比较重要的自动生成的对象ObjectFactory?。

?

PS:具体的开发文档和源代码例子可以在我的资源“WebService之XFire开发文档和代码.rar” 中进行下载参考。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读