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(); ?service.addUser(u); ? 我们可以发现User 对象的生成可以用WebService客户端自动生成的ObjectFactory?去构建也可以使用自动生成的User 直接new。 但user 对象的属性值却必须使用ObjectFactory?去创建。 查看WebService 自动生成的客户端代码中的User对象类中可以看到如下代码:? public void setName(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” 中进行下载参考。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |