调用WebService接口(二)

上一级我们说到了 生成了maven工程。
这一集我们说 生成javaBean以及String装Bean的工具类。

上一集节目地址:
调用WebService接口(一)

1、添加测试类依赖

		<dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>

2、之前想的是自己根据接口的返回接口写一个Bean类,但是由于返回的接口太复杂了,所以不想写了(其实写了一般放弃了,太难为人了)。。。
正常来说是需要手动写一个的,但是本着宁愿吃灰 也不能吃土的原则,我百度了一个反向生成javaBean类的jar包(别问我为什么百度,因为不会就百度这是我的原则)。
自己去拿:
链接:https://pan.baidu.com/s/1cgHyk1opJMJVpJI0UD47ew
提取码:vdck

3、拿到这个jar包之后,接下来准备XML文件。写一个测试类。

		URL url = new URL("http://www.webxml.com.cn/webservices/ChinaStockSmallImageWS.asmx?wsdl");
        QName qName = new QName("http://WebXml.com.cn/", "ChinaStockSmallImageWS");
        Service service = Service.create(url, qName);
        ChinaStockSmallImageWSSoap passengerInfoWebServiceSoap = service.getPort(ChinaStockSmallImageWSSoap.class);
        String xmlString = passengerInfoWebServiceSoap.getSmallImage("接口参数",);

参数解析:
URL:对方提供的WSDL地址
NameSpaceURI:下面截图说明
LocalPart:可以和.asmx之前的保持一致(个人理解)
NameSpaceURI:
在这里插入图片描述
通过在代码里面Debugger 拿到xml文件。可以在线格式化一下,然后贴到文本里面保存为.xml格式的文件。
在这里插入图片描述
4、cmd
命令:java -jar tang.jar tour.xml tour.xsd
在这里插入图片描述
在这里插入图片描述
5、生成XSD文件之后,使用xjc去解析java类。
命令:xjc tour.xsd -p tour.java
在这里插入图片描述
在这里插入图片描述
把这几个java类放到你的工程中即可。
6、以上步骤是为了生成javaBean,接下来进行解析String 字符串。
解析的工具类代码如下:

public class XmlToJavaBeanUtils {

    @SuppressWarnings("unchecked")
    public static Object xmlToBean1(String xmlString, Class<?> load) {
        Object object = null;

        try {
            JAXBContext jaxbContext = JAXBContext.newInstance(load);
            Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
            object = unmarshaller.unmarshal(new StringReader(xmlString));
        } catch (JAXBException e) {
            e.printStackTrace();
        }

        return object;
    }

    @SuppressWarnings("unchecked")
    public static <T> T XmlToBean2(String xmlString,Class<T> load) throws JAXBException {

        JAXBContext jaxbContext = JAXBContext.newInstance(load);
        Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
        return (T) unmarshaller.unmarshal(new StringReader(xmlString));

    }
}

7、使用该工具类对XML字符串进行解析。

Result result = XmlToJavaBeanUtils.XmlToBean2(xmlString, Result.class);

最后整体的代码如下:


    @Test
    public void test() throws MalformedURLException, JAXBException {
		URL url = new URL("http://www.webxml.com.cn/webservices/ChinaStockSmallImageWS.asmx?wsdl");
        QName qName = new QName("http://WebXml.com.cn/", "ChinaStockSmallImageWS");
        Service service = Service.create(url, qName);
        ChinaStockSmallImageWSSoap passengerInfoWebServiceSoap = service.getPort(ChinaStockSmallImageWSSoap.class);
        String xmlString = passengerInfoWebServiceSoap.getSmallImage("接口参数",);


        Result result = XmlToJavaBeanUtils.XmlToBean2(xmlString, Result.class);
    }

剩下的路自己走两步,多看看。

下一集节目地址:
调用WebService接口(三)

猜你喜欢

转载自blog.csdn.net/weixin_44458365/article/details/106993689
今日推荐