上一级我们说到了 生成了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接口(三)