Я получаю через HTTP
петицию JSON.При поступлении из Internet Explorer 8
синтаксический анализ завершается с исключением:
InPart inPart = mp.next();
MyClass myClass = inPart.getBody(MyClass.class, null);
com.ctc.wstx.exc.WstxUnexpectedCharException: Illegal character ((CTRL-CHAR, code 12)) at [row,col {unknown-source}]: [1,101]]
Соответствующий код:
InPart inPart = mp.next();
String s = inPart.getBody(String.class, null);
providers.getMessageBodyReader(MyClass.class, null, null,
MediaType.APPLICATION_JSON_TYPE).readFrom(MyClass.class, null, null,
MediaType.APPLICATION_JSON_TYPE, headers.getRequestHeaders(),
new ByteArrayInputStream(s.getBytes())); // Tried with s.getBytes("UTF-8")
com.ctc.wstx.exc.WstxUnexpectedCharException: Illegal character ((CTRL-CHAR, code 12)) at [row,col {unknown-source}]: [1,101]
Более того, если я делаю:
String ss = s.replaceAll("\\p{Cntrl}", "");
ss.equals(s); //
Выводtrue
длины одинаковы.
Я также пытался:
private String removeControlChar(String in) {
StringBuilder sb = new StringBuilder();
for (char c : in.toCharArray())
{
if(!Character.isISOControl(c)) {
sb.append(c);
}
else
{
// To delete
int i = 0;
}
}
return sb.toString();
}
InPart inPart = mp.next();
String s = inPart.getBody(String.class, null);
Strign ss = removeControlChar(s);
providers.getMessageBodyReader(MyClass.class, null, null,
MediaType.APPLICATION_JSON_TYPE).readFrom(MyClass.class, null, null,
MediaType.APPLICATION_JSON_TYPE, headers.getRequestHeaders(),
new ByteArrayInputStream(ss.getBytes())); // Tried with s.getBytes("UTF-8")
Если я отлаживаюсь, неуспешный символ будет \f
, как указано в исключении.Но ошибка говорит о том, что это недопустимый символ XML.Может ли это быть проблемой?
Есть идеи?Это только влияет на Internet Explorer.
Спасибо.