如何处理 unmatched/unwanted 或 Java HTTP 服务器上的有效请求?
How to handle unmatched/unwanted or valid request on Java HTTP Server?
我有一个 Java HTTPServer 应用程序在 localhost:9090 上侦听 JSON-RPC 格式 POST 请求,如下所示;
HttpServer server = HttpServer.create(new InetSocketAddress(9090), 0);
System.out.println("> Server started at port number: "+ port);
server.createContext("/serverStatus", new RootHandler());
server.createContext("/newTransaction", new EchoTransactionHandler());
server.createContext("/", new EchoPostHandler());
server.setExecutor(null);
server.start();
我正在通过 POST 和 JSON-RPC format.The 发送所有请求 EchoPostHandler class 满足所有 post 请求。 EchoPosthandler 通过查看请求主体来决定哪个函数将起作用。
server.createContext("/", new EchoPostHandler());
所有 post 请求的 url 是 localhost:9090/.
只有 2 个 GET 请求。其中之一显示服务器状态。它的 url 是 localhost:9090/serverStatus
我的问题是;当用户发送不需要的请求时,给它一个适当的答复。例如,它可以调用 localhost:9090/status
而不是调用 localhost:9090/serverStatus
来了解服务器状态。
在这种情况下,我想return一个正确的答案。
我该如何处理这个任务?
您需要为每个要处理的 /<something>
匹配一个 URL。在这方面,/status
和 /serverstatus
是截然不同的。
一个解决方案可能是同时定义 URL 并向两者添加相同的处理程序:
HttpHandler hndSystemStatus = new RootHandler();
HttpServer server = HttpServer.create(new InetSocketAddress(9090), 0);
System.out.println("> Server started at port number: "+ port);
server.createContext("/serverStatus", hndSystemStatus );
server.createContext("/status", hndSystemStatus );
server.createContext("/newTransaction", new EchoTransactionHandler());
server.createContext("/", new EchoPostHandler());
server.setExecutor(null);
server.start();
所有不需要的或非上下文定义的请求的 URL 作为基础 URL。
因此,我在EchoPostHandler中添加了一些控件来解决我的问题。
我有一个 Java HTTPServer 应用程序在 localhost:9090 上侦听 JSON-RPC 格式 POST 请求,如下所示;
HttpServer server = HttpServer.create(new InetSocketAddress(9090), 0);
System.out.println("> Server started at port number: "+ port);
server.createContext("/serverStatus", new RootHandler());
server.createContext("/newTransaction", new EchoTransactionHandler());
server.createContext("/", new EchoPostHandler());
server.setExecutor(null);
server.start();
我正在通过 POST 和 JSON-RPC format.The 发送所有请求 EchoPostHandler class 满足所有 post 请求。 EchoPosthandler 通过查看请求主体来决定哪个函数将起作用。
server.createContext("/", new EchoPostHandler());
所有 post 请求的 url 是 localhost:9090/.
只有 2 个 GET 请求。其中之一显示服务器状态。它的 url 是 localhost:9090/serverStatus
我的问题是;当用户发送不需要的请求时,给它一个适当的答复。例如,它可以调用 localhost:9090/status
而不是调用 localhost:9090/serverStatus
来了解服务器状态。
在这种情况下,我想return一个正确的答案。
我该如何处理这个任务?
您需要为每个要处理的 /<something>
匹配一个 URL。在这方面,/status
和 /serverstatus
是截然不同的。
一个解决方案可能是同时定义 URL 并向两者添加相同的处理程序:
HttpHandler hndSystemStatus = new RootHandler();
HttpServer server = HttpServer.create(new InetSocketAddress(9090), 0);
System.out.println("> Server started at port number: "+ port);
server.createContext("/serverStatus", hndSystemStatus );
server.createContext("/status", hndSystemStatus );
server.createContext("/newTransaction", new EchoTransactionHandler());
server.createContext("/", new EchoPostHandler());
server.setExecutor(null);
server.start();
所有不需要的或非上下文定义的请求的 URL 作为基础 URL。 因此,我在EchoPostHandler中添加了一些控件来解决我的问题。