前言
在实际公司开发中,经常会出现需要从不同数据调取接口或同步更新数据的情况(原因是不同系统的隔离问题,数据安全问题),当当前系统需要用到别的系统中的数据,就需要用WebService技术(不在本小节讲述)
实际使用场景
我们webService 的客户端与服务端创建完成后, 核心是通过一个叫XXXStub 的文件进行运行,其主要方法是一个process()
我们可以看到process 需要一个webService自带的 InputPararmeter参数
InputParameters 有两个参数,commonParameters 用于保存一些用户名密码,message 则保存我们需要传递个服务端的参数,而这message 是字符串类型,这是就需要我们将JavaBean对象解析成message能够接收的参数,(支持 XML形式或者JSON形式)。
否侧就报错
这是可以用JAXB框架使得通过JAVA访问xml变得非常简单, 然后运用下方工具类方法beanToXml()将JavaBean换成XMl, 然后转变成String 类型, 就可以用于InputParameters的message 进行接收。
如果你底子够好懂的上述的一堆知识过程, 就可以跳到这一步 上述只是说其中的一个应用场景
package com.epoch.xygf.paymentFund.service.Util;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
import java.io.StringReader;
import java.io.StringWriter;
public class util {
public static String beanToXml(Object obj, Class<?> load) throws JAXBException {
JAXBContext context = JAXBContext.newInstance(load);
Marshaller marshaller = context.createMarshaller();
// marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
// marshaller.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");
// marshaller.setProperty("com.sun.push.bind.xmlDeclaration", Boolean.FALSE);
marshaller.setProperty(Marshaller.JAXB_FRAGMENT, true);
StringWriter writer = new StringWriter();
marshaller.marshal(obj, writer);
return writer.toString();
}
public static <T> T xmlToJson(String xml, Class<T> classType) throws JAXBException {
JAXBContext jaxbContext = JAXBContext.newInstance(classType);
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
return (T) unmarshaller.unmarshal(new StringReader(xml));
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之家整理,本文链接:https://www.bmabk.com/index.php/post/4837.html