微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

WebService 开发 XFire 传递java对象

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” 中进行下载参考。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐