解决axis2 wsdl与请求soap报文中字段顺序不一致的问题:Unexpected subelement XXXX
来源:互联网 发布:windows 网络监控工具 编辑:程序博客网 时间:2024/06/02 15:46
axis2报错:org.apache.axis2.AxisFault: org.apache.axis2.databinding.ADBException: Unexpected subelement XXXX
因为wsimport命令生成的类是按照wsdl中字段的顺序进行校验的,所以当字段顺序不一致或者请求中的字段在wsdl不存在时,均会报此错误。
修改生成的类中的Factory.parse(...)方法,去除多数字段的校验,增加字段循环设值:
// --------------------zhaigx20131202 String fieldName = null; String fieldVal = null; QName qName = null; while (reader.isStartElement()) { qName = reader.getName(); fieldName = qName.getLocalPart(); nillableValue = reader.getAttributeValue( "http://www.w3.org/2001/XMLSchema-instance", "nil"); if ("true".equals(nillableValue) || "1".equals(nillableValue)) { throw new org.apache.axis2.databinding.ADBException( "The element: " + fieldName + " cannot be null"); } fieldVal = org.apache.axis2.databinding.utils.ConverterUtil .convertToString(reader.getElementText()); MapperUtil.setPropertyVal(object, fieldName, fieldVal); reader.next();// skip text // skip other like space,tab while (!reader.isStartElement() && !reader.isEndElement()) { reader.next(); } // move to next if (reader.isEndElement()) { reader.next(); } } // skip other like space,tab while (!reader.isStartElement() && !reader.isEndElement()) { reader.next(); } // --------------------end
public static void setPropertyVal(Object dest, String key, Object val) { Class<?> clazz = dest.getClass(); try { java.lang.reflect.Method setMethod = clazz.getMethod("set" + StringUtils.capitalize(key), String.class); setMethod.invoke(dest, val); } catch (Exception e) { log.error("Error: {}={}", key, val); } }
soap报文中的对应类结尾标签可能需要增加reader.hashNext:
while (!reader.isStartElement() && !reader.isEndElement()
&& reader.hasNext()) {
reader.next();
}
- 解决axis2 wsdl与请求soap报文中字段顺序不一致的问题:Unexpected subelement XXXX
- webservice接口soap请求报文的xml字段顺序必须与wsdl中定义的顺序一致才能解析正确
- org.apache.axis2.databinding.ADBException: Unexpected subelement arg0 的解决方法
- org.apache.axis2.databinding.ADBException: Unexpected subelement arg0的一种解决办法
- wsdl与soap的关系
- soap 与 wsdl的关系
- WebService soap报文请求与响应报文解析
- [线上问题] Nginx与Tomcat、Client之间请求的长连接配置不一致问题分析解决
- 解析xml文件中定义的请求报文和返回报文字段
- 解决webService+axis2生成的wsdl文件有两个Bindings/Endpoint 的问题
- php 处理字段与数据库字段顺序不一致的 csv 文件
- 解决xml解析中报文格式和encoding不一致的解析错误
- c语言中“在xxxx处有未经处理的异常”问题的分析与解决
- HTTP的请求报文与响应报文
- org.apache.cxf.binding.soap.SoapFault: Unexpected wrapper element 出现命名空间不一致问题,解决方法
- 在Mybatis中,解决数据库字段名与java实体类属性名不一致的三种方式
- SOAP请求、响应报文格式
- SOAP请求、响应报文格式
- PL/SQL Developer快速输入select * from等语句快捷键设置
- linux 切换用户之后变成 -bash-3.2$ :
- 在ArcEngine中对double类型的数据进行模糊匹配查询
- iOS的变量与内存原理
- hibernate错误org.hibernate.AnnotationException: No identifier specified for entity:
- 解决axis2 wsdl与请求soap报文中字段顺序不一致的问题:Unexpected subelement XXXX
- 基于开源项目acra实现的定制化Android crash上报库及后台系统
- DbVisualizer直接导出SQL查询结果数据到指定文件
- 314 - Robot(用Dijkstra怎么还ac不了)
- 基于visual Studio2013解决C语言竞赛题之0506选择排序
- OpenCV中绘制十字光标
- Localization native development region的设置
- py2exe 脚本文件
- 计划弄个vqmod for ecshop