新建一个User类:
packagecom.zhutulang.soap; importjavax.xml.bind.annotation.XmlRootElement; @XmlRootElement public class User { private String name; private String pwd; private int age; public User() { super(); } public User(String name,String pwd,int age) { super(); this.name = name; this.pwd = pwd; this.age = age; } @Override public String toString() { return "[name:"+name+",pwd:"+pwd+",age:"+age+"]"; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPwd() { return pwd; } public void setPwd(String pwd) { this.pwd = pwd; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
@WebResult(name="user") public User addUser(@WebParam(name="user")User user);
接口实现很简单,就是把一个user加入list中
packagecom.zhutulang.soap; importjava.util.ArrayList; importjava.util.List; importjavax.jws.WebService; @WebService(endpointInterface="com.zhutulang.soap.MyServiceInter") public class MyServiceInterImpl implements MyServiceInter { private List<User> users = new ArrayList<User>(); @Override public int add(int a,int b) { System.out.println("a+b"+(a+b)); return a+b; } @Override public User addUser(User user) { users.add(user); return user; } } Test方法: /** * <p>Title: 通过payload发送消息</p> * <p>Description: </p> * @throws MalformedURLException * @throws JAXBException * @throwsTransformerFactoryConfigurationError * @throws TransformerException * @throws XPathExpressionException * @author zhutulang * @version 1.0 */ @Test public void test3() throws MalformedURLException,JAXBException,TransformerFactoryConfigurationError,TransformerException,XPathExpressionException{ //1.创建服务 URL url = new URL(wsdlUrl); QName qName = new QName(namespaceUrl,"MyServiceInterImplService"); Service service = Service.create(url,qName); //2.创建dispatch (通过源数据方式传递) dispatch<Source> dispatch = service.createdispatch(new QName(namespaceUrl,"MyServiceInterImplPort"),Source.class,Service.Mode.PAYLOAD); //3.根据一个User对象创建相应的xml User user = new User("Lucy","123456",26); JAXBContext ctx = JAXBContext.newInstance(User.class); Marshaller mar = ctx.createMarshaller(); mar.setProperty(Marshaller.JAXB_FRAGMENT,true); StringWriter writer = new StringWriter(); mar.marshal(user,writer); //4、封装相应的part addUser String payload = "<nn:addUser xmlns:nn=\""+namespaceUrl+"\">"+writer.toString()+"</nn:addUser>"; System.out.println(payload); StreamSource rs = new StreamSource(new StringReader(payload)); //5.通过dispa传递payload Source response = dispatch.invoke(rs); //6.将source转换为DOM Transformer transformer = TransformerFactory.newInstance().newTransformer(); Domresult result = new Domresult(); transformer.transform(response,result); //7.处理相应的消息 XPath xPath = XPathFactory.newInstance().newXPath(); NodeList nl = (NodeList) xPath.evaluate("//user",result.getNode(),XPathConstants.NODESET); User ru = (User) ctx.createUnmarshaller().unmarshal(nl.item(0)); System.out.println(ru); }
相关的代码下载: http://download.csdn.net/detail/zhutulang/9487929
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。