2013-11-04 3 views
2

내가 구현 한 com.sun.net.httpserver.HttpServer :HttpServer 구현에 매개 변수를 전달하는 방법은 무엇입니까?

HttpServer server = HttpServer.create(new InetSocketAddress(8001), 0); 
server.createContext("/myserver", new myHttpHandler()); 
server.createContext("/myserver/get", new GetHttpHandler()); 

내가 매개 변수를 전달하려는/MyServer를/다음 URL로 얻을 :

http://localhost:8000/myserver/get?deviceid=ABB00122 

static class GetHttpHandler implements HttpHandler { 

    public void handle(HttpExchange exchange) throws IOException { 

// how do I now access the deviceid? 

    } 
} 

을 내가 매개 변수에 액세스하려면 어떻게 deviceid 핸들 메서드에서 내 URL을 보냈습니까?

+1

'HttpExchange'의 javadoc을 읽었습니까? 거기서 시작하십시오. –

+0

getAttribute를 통해 매개 변수에 액세스 할 수있는 것처럼 보였습니다. String을 시도했습니다. deviceid = (String) exchange.getAttribute ("deviceid"); 그러나 deviceid의 값으로 null을 얻습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까? – user840930

답변

0

이 유형은 사용하지 않았지만 HttpExchange doc에서 요청 매개 변수가 아닌 것으로 보입니다. 이 정보는 getQueryString() 방법을 통해 액세스 할 수 있습니다.

+0

오케이. com.sun.net.httpserver.HttpExchange에서 javax.xml.ws.spi.http.HttpExchange로 전환하면 javax.xml.ws.spi.http.HttpExchange가 com.sun.net.httpserver.HttpServer와 함께 사용되는 방법 ? 또한 com.sun.net.httpserver.HttpHandler를 사용해야합니까? – user840930

+0

그래, 문제를 해결했다. com.sun.net.httpserver.HttpServer는 com.sun.net.httpserver.HttpExchange 및 com.sun.net.httpserver.HttpHandler와 함께 사용해야합니다. 전송 된 속성을 파싱 할 때 getQueryString이 없으므로 훨씬 더 복잡해 보입니다. – user840930

2

HttpServer 클래스는 매우 간단합니다. URL에 전달 된 매개 변수 (GET 메소드 사용)에 액세스하려는 경우 추출 할 메소드를 제공해야합니다.

당신은에서 전체 URL 얻을 :. httpExchange.getRequestURI() 를 getQuery()를

하고이 문자열에서 당신이 세부 사항을 얻을 수 있습니다.

자세한 내용은 http://www.rgagnon.com/javadetails/java-get-url-parameters-using-jdk-http-server.html을 참조하십시오.