2011-04-14 4 views
0

인터넷의 예제 중 하나를 사용하여 간단한 com.sun.net.httpserver.HttpServer 응용 프로그램을 구현했습니다. 서버는 하나만 제외하고 예상대로 요청을받습니다. 예외 : url에 tspecials가 포함 된 경우 : "또는 '<'"/ "요청이 서버에 전혀 도달하지 않습니다. 간단한 java.net.ServerSocket을 사용하면 모든 작업이 훌륭하게 작동하며 모든 tspesials가 인코딩 된 곳에서 요청을받습니다. 이는 나에게 잘 맞지만 HttpServer를 사용하는 것이 더 좋습니다. 예 요청HttpServer의 URL에 특수 문자 (<, "등")를 포함하는 방법

: http://127.0.0.1/MyApp/Test?var=<xml ID = 1 “ “ > 값 </XML > ServerSocket를위한 작품 HttpServer에 작동하지.

도움이 될 것입니다.

+0

나는 클라이언트 요청을 수정할 수 없다. – yan

답변

0

당신은 % 표기법을 사용하여 클라이언트 측에서 URL을 인코딩해야합니다 쿼리가 & 문자가 포함 된 경우 URI.getRawQuery()를 사용한다, 서버 측에

http://127.0.0.1/MyApp/Test?var=%3Cxml+id%3D%271%27%3Evalue%3C%2Fxml%3E

을, URLDecoder.decode로 매개 변수 값을 지정합니다.

+0

고맙다. ServerSocket을 사용할 때 나는 당신의 예제 에서처럼 정확하게 인코딩 된 서버를 요청할 필요가 없다. 나는 문제가 HttpServer에 있다고 생각한다. – yan

+0

ServerSocket 당신은 자신의 HTTP 프로토콜을 구현해야합니다. 구현시 URL 인코딩이 필요하지 않으면 표준을 준수하지 않습니다. 따라서 http를 구현하려면 HttpServer가 좋습니다. 사용자 정의 프로토콜을 구현하려면 해당 프로토콜에 대한 구현을 제공해야합니다. –

+0

IE가 URL을 인코딩하고 내 서버가 URL을 이미 인코딩해야합니다. – yan