WebService中控制字符的处理
2013-07-09 22:09 Paddle Zhou 阅读(681) 评论(0) 编辑 收藏 举报情景
最近项目中很多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();
}