WEB&J2EE

Hagi 2012. 8. 23. 18:19

Rest Service를 이용하여 실패 시 XML에 에러 메세지를 전송하는 작업을 하다 겪게된 사소한 Encoding 확인 실수에 관한 공유를 할까 합니다.

최초 영문자로 된 에러 메세지를 보냈으나, 고객은 중국어 간체로 된 에러 메세지를 받기를 원했습니다.

* Rest의 에러메세지를 확인하기 위해서 Java로 만들어진 Rest Client Tool(http://code.google.com/a/eclipselabs.org/p/restclient-tool/)을 썼습니다.

- <RESPONSE xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
< <RETCODE>4020</RETCODE>
< <ERRMSG>Invalid Store.[]</ERRMSG>
</RESPONSE>

영어로 된 에러메시지의 경우 위와 같이 깔끔하게 나왔던 관계로 이것을 번역해서 한자로 된 것을 뿌려주기만 하면 되겠지라고 생각했습니다.
그런데 왠걸... 아래와 같이 글자가 깨졌습니다. 모든 소스가 UTF-8인데... OTL



이에 대한 해결책으로
1. 간체로 인코딩하여 UTF8로 다시 디코딩한다.
2. URIEncoding을 이용한다.
3. 에러메세지를 Base64로 인코딩하여 전송한 뒤 고객에게 디코딩하도록 요청한다.
4. 그 외 여러가지...

실제 3번은 가능한 관계로 팀장님께 문의를 했습니다.
WireShark(http://www.wireshark.org/)라는 네트워크 프로토콜 분석기를 한번 써보자고 하셔서...
요상한 숫자로 나열된 에러메시지를 확인하였습니다.


그리고 울트라에디트에서 Ctrl+h를 눌러 바이너리로 된 값을 확인해 보았습니다.




보시는 바와 같이 값이 같습니다. ㅡㅡ;

결론적으로 정상적으로 값이 전달되었으나, Rest Client Tool에서 글자가 깨지는 것일 뿐이었습니다.
저와 같이 쓸데 없이 시간 낭비를 하지 마시기를 바라며...


해당 Rest Service는 POST방식만을 허용하였습니다. 

이것을 브라우저에서 테스트 하기 위해서는 GET방식으로 보내야만 했는데, 

그래서 쓴 꼼수가 아래와 같습니다. 


<html>

<body>

<form action="POST만허용되는REST의URL" method="POST">

파라미터 설정

<input type= submit  value="보내기" />

</form>

</body>

</html>



HYayMj <a href="http://boqafacpsszt.com/">boqafacpsszt</a>, [url=http://fqcjdkhhusor.com/]fqcjdkhhusor[/url], [link=http://gydjfktztbjl.com/]gydjfktztbjl[/link], http://wbszpcjzplhv.com/