解决WebService中InputParameters的message传参问题。

本文介绍了如何在Web服务开发中使用JAXB框架将Java对象轻松转换为XML和JSON格式,以便适配WebService的InputParameter。通过beanToXml()和xmlToJson()方法,解决了跨系统数据交互中的参数转换问题。

前言

在实际公司开发中,经常会出现需要从不同数据调取接口或同步更新数据的情况(原因是不同系统的隔离问题,数据安全问题),当当前系统需要用到别的系统中的数据,就需要用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));
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值