zoukankan      html  css  js  c++  java
  • WebService中控制字符的处理

    情景

        最近项目中很多WebService都发不出去,报的错误如下:
     
     Invalid white space character in text to output (in xml 1.1, could output as a character entity)
     
    代码如下
        private String excuteRealTimeExchange(PadisPackageType reqPackage) {
            String result;
            try {
                result = rte.execute(JaxbUtils.convertPadisObjectToXml(reqPackage));
            } catch (Exception e) {
                throw new PadisException(".....");
            }
            return result;
        }
     
    之前一直以为是网络原因,导致webserivce发不出去。今天调试,才发现是因为报文中有控制字符,所以才抛出错误。
     

    原因

    XML支持的字符是有限的,详细请看:
     
    特殊字符如控制字符是不被支持的
     

    解决

    在发送XML的时候,把不合法的控制字符都去掉。
    方法如下:
     
        public static String trimAllISOControl(String str) {
            if (!hasLength(str)) {
                return str;
            }
            StringBuilder sb = new StringBuilder(str);
            int index = 0;
            while (sb.length() > index) {
                if (Character.isISOControl(sb.charAt(index))) {
                    sb.deleteCharAt(index);
                } else {
                    index++;
                }
            }
            return sb.toString();
        }
     
     




  • 相关阅读:
    作业3月30号
    21、,模块与包的使用
    作业3月26号
    20、面向函数与匿名函数及模块
    作业3月25号
    19、迭代器及函数的递归调用
    作业3月24号
    06-函数
    3.17---购物车练习
    3.15---文件处理练习2
  • 原文地址:https://www.cnblogs.com/lostpaddle/p/3180988.html
Copyright © 2011-2022 走看看