2011-01-29 8 views
1

기본적으로 http 요청에 대한 프록시를 작성하려고합니다. 필자는 서버를 매우 쉽게 설정할 수 있었고 브라우저를 직접 연결 대신 프록시에 연결 한 후 브라우저에서 보낸 원시 HTTP 요청을받습니다.프록시를 통해 Java에서 원시 HTTP 요청을 보내는 방법

이제 내 문제는 대상 서버의 응답을 검색하기 위해 프록시에서 원시 요청을 보낼 수 있어야한다는 것입니다. 나는 Apache의 HttpClient를 통해 주위를 파고 들려고했지만, 내가 볼 수있는 한, 요청을 보내기 쉽게하기 위해 어떻게 사용될 수 있는지 아직도 확신 할 수 없다.

제안 사항?

답변

1

CONNECT 명령을 인식하는 것보다 yur 프록시에 HTTP 인식 코드가 필요하지 않습니다. 나머지는 바이트를 앞뒤로 복사하는 것입니다. 연결 당 두 개의 스레드를 사용하거나 NIO를 사용하여 하나의 스레드에서 모두 수행 할 수 있습니다.

+0

"CONNECT"명령이란 무엇을 의미합니까? 내 프록시를 통해 브라우저를 실행 중이며 프록시에서 "http://www.google.com HTTP/1.1 가져 오기"와 같은 원시 http 요청을 수신하고 있습니다. 대상 서버 (이 예제에서는 google.com). – jerluc

+0

그러면 첫 번째 행에서 수신하는 whetvr 명령에서 tagetbhost : port를 식별하고 연결 한 다음 클라이언트가 서버로 보내는 모든 바이트와 서버가 클라이언트로 보내는 모든 바이트를 보냅니다. 연결 오류를보고하고 종료를 올바르게 처리하는 것만 큼은 않습니다. – EJP

0

원격 서버에 연결하기 만하면됩니다. 브라우저의 요청을 어떻게 재 라우팅하는지에 따라 직접 DNS 조회를 구현해야 할 수도 있습니다. EJP가 말했듯이 한 스트림에서 다른 스트림으로 바이트를 복사하고 응답을 다시 복사합니다.

관련 문제