是否可以在 HttpServer.createContext 的处理程序方法中获取完整的 http 请求?

Is it possible to get the full http request inside the handler method of HttpServer.createContext?

我正在关注 this 示例代码,想知道是否可以在 处理程序方法中获取完整的 http GET 请求? 例如我有 http://localhost:8000/test?param1=value1&param2=value2

我找不到任何方法来获取请求的这些参数。 这是这段代码:

import java.io.IOException;
import java.io.OutputStream;
import java.net.InetSocketAddress;

import com.sun.net.httpserver.HttpExchange;
import com.sun.net.httpserver.HttpHandler;
import com.sun.net.httpserver.HttpServer;

public class Test {

    public static void main(String[] args) throws Exception {
        HttpServer server = HttpServer.create(new InetSocketAddress(8000), 0);
        server.createContext("/test", new MyHandler());
        server.setExecutor(null); // creates a default executor
        server.start();
    }

    static class MyHandler implements HttpHandler {
        @Override
        public void handle(HttpExchange t) throws IOException {
            String response = "This is the response";
            t.sendResponseHeaders(200, response.length());
            OutputStream os = t.getResponseBody();
            os.write(response.getBytes());
            os.close();
        }
    }
}

你有那个很棒的参数 HttpExchange in your handler callback, which has a method getRequestURI(), that returns a URI,它有获取方法

  • 主持人
  • 港口
  • 编码和解码的查询字符串

请注意,如果您的应用程序是反向代理的,您所拥有的只是用于发出请求的代理服务器(主机名、端口和协议可能会有所不同,但也可以进行一些转换请求的其他部分)