WCF接口调用报错org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 182; 字符引用 &quo t;&am p;#
第一次写博客,这次是真的忍不住, 感觉有必要做一下记录了,就这个简简单单的报错,整了我整整两天时间。事情很简单,就是做个接口程序时,需要调用WCF服务,然后WCF服务并不是我自己写的程序,所以并不清楚内部用哪些内容。
好了上面,就是事情的开始,仅仅做个记录,没必要在意。
故事的经过是,我调用的dome中,测试一点问题没有,返回值什么的都可以接受到,但是当我把参数封装到一个对象中,通过对象get得到相应数据时,就会报错,报错如下。
AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
faultSubcode:
faultString: org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 182; 字符引用 "&#
faultActor:
faultNode:
faultDetail:
{http://xml.apache.org/axis/}stackTrace:org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 182; 字符引用 "&#
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLScanner.scanCharReferenceValue(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown Source)
按照报错,应该是特殊字符导致的,然后我就开始了疯狂的百度中,查看这个对应的是什么字符,然后各种百度这个报错问题,各种找不到答案,于是只能自力更生喽,于是我死命的找特殊字符,就是没有,再然后我有点拖鞋(妥协)了,感觉可能是前台传递参数做处理时出的问题,有点想找写参数处理的同事,让他看看他的问题了,但是忍了,毕竟其他都没问题就这个有问题,那么应该就不是参数处理的问题,但是自己还是想尝试一下,于是我没通过前台调用,直接在程序中set对象的值,然后用get得到进行调用,发现还是有报错,几经折腾,还是没用,后来找来了WCF服务的编写人员,质问人家程序里是不是设定了,参数传的字符串和对象是不是做了特别的处理,现在想想真的是可笑。
**
最后才发现,原来是因为参数传递的时候,我遗漏了一个字符,也就是参数是D2BBCCEE,但是我传递参数的时候给的是2BBCCEE,导致的报错。 后续为了搞懂为什么不能少一位,WCF编写人员,在那儿也研究了一整天,因为他那边做处理并没有按照位数截取字符串,程序中也没有对传入的参数做长度限制,后续才发现,原来WCF程序中他们调用了某个正则表达式中对长度及文本内容做了限制。
**
特别傻,特别傻,真的傻,所以做个记录。避免各位和我犯相同的错误。