아래와 같은 항목을 실행시키면 반드시 com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: Invalid byte 1 of 1-byte UTF-8 sequence. 에러가 발생했다.
InputStream stream = method.getResponseBodyAsStream();
InputSource inputSource = new InputSource(stream);
String contents = xPathExpression.evaluate(inputSource);
자바 IO에서는 두 가지 방법을 제공하고 있는데, 하나는 stream 구조로1byte 기반이며, 두 번째는 write, reader로 이는 2byte 기반이라고 한다. 곧 reader를 대신 사용하면 해결이 된다는 이야기이다.
InputStream stream = method.getResponseBodyAsStream();
InputStreamReader reader = new InputStreamReader(stream);
InputSource inputSource = new InputSource(reader);
String contents = xPathExpression.evaluate(inputSource);
이 코드는 아무 에러없이 잘 동작한다.
참고한 문서 : 찬욱님 블로그 : UTFDataFormatException 처리