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();
        }
     
     




  • 相关阅读:
    设计一个数据结构,包含两个函数,1.插入一个数字,2.获得中数
    数状数组
    25匹马,每次能5匹一起跑,选出最快的3匹
    禁止ImageCapture自动启动
    SublimeText Videos Notes
    10G个64bit整数,找出中位数
    python初步要点II
    python初步要点
    找出丢失的数字
    nice & renice
  • 原文地址:https://www.cnblogs.com/lostpaddle/p/3180988.html
Copyright © 2011-2022 走看看