우선, 나는 이것이 학교 프로젝트라는 것을 인정할 것이므로 실제 코드보다는 방향성이 더 필요하다. 또한, java.net.HTTPURLConnection 클래스와 java.net.URL 클래스를 사용하여 도울 수 없습니다. ...Java에서 HTTP 메시지 읽기
Ok ... HTTP 서버를 읽는 데 문제가 있지만 Java에서 HTTP 서버를 만들고 있습니다. HTTP/1.1을 사용하고 연결이없는 경우 영구 연결을 허용해야합니다.이 연결은 이미 작동합니다. 그러나 끈기 때문에 파이프 라인을 따라 내려 오는 요청이 여러 개있을 수 있습니다.
메시지 본문의 길이를 결정하기 위해 Content-Length 헤더를 사용할 수 있다는 것을 알고 있습니다. 그 다음 메시지가 파이프를 따라 내려옵니다.
내 질문에 ...
- 나는 문자로 바이트 또는 문자로 메시지 바이트 읽을 경우, 또는 내가 선으로 줄을 읽을 수 있습니까? 줄 단위로가는 것은 메시지 본문을 치기 전까지는 괜찮을 것입니다 ...
- 메시지 본문을 바이트 형식으로 저장해야합니까, 아니면 String입니다. (HTML은 문제가 없지만 이미지 등은 중단됩니다. 문자열?)
- 줄 단위로 읽을 수있게 해주는 스캐너가 있습니까? 그러면 메시지 본문을 때리면 getBytes (contentLength)를 호출하고 나에게 시체를 제공합니까?
다시 한번 감사드립니다!
편집 : 청크 또는 압축 된 데이터를 지원할 필요가 없습니다.
게시물 주셔서 감사합니다. 나는 다른 사람들도 말할 필요가있는 것을 보게 될 것이다. 나는 청크 인코딩에 대해 걱정할 필요가 없다는 점에 대해 질문을 수정했다. – mikesir87
Ok ... 그래서 헤더를 아직 파싱 할 수 없다면 내용 길이가 무엇인지 어떻게 알 수 있습니까? – mikesir87
@ mikesir87 : 음, 좋은 지적 ;-). 이 시점에서 당신은 정말로 선을 현명하게 읽어야합니다. 가장 쉬운 방법은 헤더 섹션을 종료하는 '\ r', '\ n', '\ r', \ 'n'시퀀스를 인식 할 때까지 문자 현명하게 읽는 것입니다. 지금까지 모든 캐릭터를 StringBuffer에 추가했습니다. 그런 다음 헤더를 가지고 바이트 배열을 분석하고 계속 읽을 수 있습니다. 이 방법은 성능에는 좋지 않지만 구현하기 쉽습니다. – yankee