Vert.x HTTP Header Content-Length

gemma-evans-182245

JAVA로 간단한 웹서버를 만들 일이 생겼다. java.net.ServerSocket, Socket, BufferedWriter 등을 써서 저수준에서 짜려다보니까 이건 말이 안되는 것 같았다. node.js에서의 express와 같은 라이브러리를 찾다보니 Vert.x라는 Framework을 발견했다.

그 후 내가 겪은 에러는 다음과 같다. Response Header에 Content-Length를 비우면 비웠다고 에러가 뜨고, 너무 짧으면 http body가 앞 부분만 출력되며, 너무 길어버리면 http req가 끝나지 않는다. (브라우저가 패킷이 도착하길 기다린다.)

하지만, content.length() 라고 바로 넣으면 body의 앞 부분만 출력되는데, 이는 byte count를 넘겨주지 않아서 발생하는 문제다. 특히, "Content-Type", "text/html; charset=utf-8"와 같이 ascii 이외의 문자를 다루는 경우, content.length()라고 넣지 말고 content.getBytes().length 와 같이 넣어주어야 정상적으로 작동한다.

Leave a Reply