CAS单点登录报错 org.jasig.cas.client.util.XmlUtils 必须由匹配的结束标记

今日调试单点登录时遇到下面的错误,查阅网上各种资料没有解决。经过自己的思索,可能是字符乱码导致正好cas服务器返回的信息有不规则的字符,导致解析报错。于是尝试解决。
1、报错信息如下:
2017-06-01 19:15:10,348 ERROR [org.jasig.cas.client.util.XmlUtils] - " 终止。>
org.xml.sax.SAXParseException; lineNumber: 31; columnNumber: 15; 元素类型 "cas:aae004" 必须由匹配的结束标记 "" 终止。
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.
at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(XMLScanner.
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScann erImpl.scanEndElement(XMLDocumentFragmentScann erImpl.
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScann erImpl$FragmentContentDriver.next(XMLDocumentFragmentScann erImpl.
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl .next(XMLNSDocumentScannerImpl .
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScann erImpl.scanDocument(XMLDocumentFragmentScann erImpl.
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.
at org.jasig.cas.client.util.XmlUtils.getTextForElement(XmlUtils.
at org.jasig.cas.client.validation.Cas20ServiceTicketValida tor.parseResponseFromServer(Cas20ServiceTicketValida tor.
at org.jasig.cas.client.validation.AbstractUrlBasedTicketVa lidator.validate(AbstractUrlBasedTicketVa lidator.
at org.jasig.cas.client.validation.AbstractTicketValidation Filter.doFilter(AbstractTicketValidation Filter.
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.
at com.ylzinfo.ahygzw.filter.LoginFilter.doFilter(LoginFilter.
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.
at org.jasig.cas.client.session.SingleSignOutFilter.doFilter(SingleSignOutFilter.
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandle r.process(AbstractProtocol.
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.
at
at
at

2、解决思路
首先发现cas服务器有些账号可以登录,有些不能登录。而这些账号格式都一样,区别就在内容。而返回数据有一个中文内容的字段,尝试将数据库该账号的中文内容修改成别的内容,再次启动调试,发现不报错!于是猜测可能是不同的中文乱码,有的正好会导致cas客户端解析失败。
解决方法:在客户端web.xml的CAS Validation Filter配置下增加
encoding
utf-8
再次还原之前报错的账号内容,登录成功!
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以处理非常复杂的xml,带节点保存,如节点a下的节点b下的name,调用可用map.get("a").get("b").get("name")如:{ "sectornum": "3", "ReturnResult": "0", "containers": { "container": [ { "shelfhight": "0.086", "cardinfos": { "cardinfo": [ { "cardname": "290.蓝田局华胥电信营业厅CDMA基站/BTS529/架1列1/框3槽(0)HECM" }, { "cardname": "290.蓝田局华胥电信营业厅CDMA基站/BTS529/架1列1/框3槽(10)FAN" }, { "cardname": "290.蓝田局华胥电信营业厅CDMA基站/BTS529/架1列1/框3槽(9)UPEU" }, { "cardname": "290.蓝田局华胥电信营业厅CDMA基站/BTS529/架1列1/框3槽(7)CMPT" }, { "cardname": "290.蓝田局华胥电信营业厅CDMA基站/BTS529/架1列1/框3槽(2)HCPM" } ] } }, { "shelfhight": "0.308", "cardinfos": { "cardinfo": [ { "cardname": "290.蓝田局华胥电信营业厅CDMA基站/BTS529/架1列1/框1槽(2)CRFU" }, { "cardname": "290.蓝田局华胥电信营业厅CDMA基站/BTS529/架1列1/框1槽(4)CRFU" }, { "cardname": "290.蓝田局华胥电信营业厅CDMA基站/BTS529/架1列1/框1槽(0)CRFU" } ] } }, { "shelfhight": "0.086" }, { "shelfhight": "0.044" } ] }, "rackname": "HW401C", "asset": { "comments": "", "buydate": "", "assetcardno": "B", "category": "" }, "barcode": "", "version": "", "entity": { "entitycode": "LTJHXYYCX01/XA-HWMACBTS529", "installaddress": "", "entityspec": "BTS", "entityname": "蓝田局华胥电信营业厅CDMA基站/BTS529", "entityid": "901061314", "model": "HUAWEI BTS3900", "vendorname": "HuaWei" }, "ReturnInfo": "成功" }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值