为com.sun.net.httpserver.HttpServer(Java)创建动态上下文

jil*_*t3d 5 java httpserver

我需要处理HTTP请求,使用com.sun.net.httpserver.HttpServer以下URL模式触发请求:

http://somehost:9000/<var>/<service>

<var> 是一个传递给的参数 <service>

<service> 是服务器提供的预定义服务

问题是上下文路径在编译时是未知的(因为<var>)因此我不能只调用createContext(String path, HttpHandler handler).如何将这种"动态"上下文绑定到特定HttpHandler实例?

小智 6

你可以处理"/"并调整处理程序,如下所示:

createContext("/", new HttpHandler(){
    @Override
    void handle(final HttpExchange exchange) throws IOException {
         // use getRequestURI()
    }
});
Run Code Online (Sandbox Code Playgroud)

也可以看看 HttpExchange#getRequestURI()


小智 5

我知道这是一个非常老的话题,但是对于发现它的任何人,我希望我的回答会有所帮助。

我最近创建了一个类似的服务器,其中我需要一个URL处理程序,格式为/ person / [id] / [location],其中“ id”和“ location”是变量值。但是我还需要一个/ person处理程序。

我确定那里有文档,但是我发现creatContext会将处理程序分配给它首先识别的内容。

这意味着我要做的就是为“ / person”定义一个处理程序,并在该处理程序中检查[id]和[location]值。如果有这些值,则处理程序将执行其他操作,否则,将执行/ person处理程序。

我希望这有帮助!