我想编写一个 Java 程序,使用对浏览器的 HTTP 302 响应消息将所有 GET 请求从浏览器重定向到给定的 URL

I want to write a Java program to redirect all GET requests from a browser to a given URL using an HTTP 302 response message to the browser

首先创建了网络服务器:

主要方法的代码

HttpServer server = null;
try {
    server = HttpServer.create(new InetSocketAddress(9000), 0);
} catch (IOException ex) {

}
server.createContext("/", new MyHandler());
server.setExecutor(null);
server.start();

在同一个 class 中,我创建了 Myhandelr class 以便将所有 GET 请求重定向到 google.com 或任何网站。

static class MyHandler implements HttpHandler {
    @Override
    public void handle(HttpExchange t) throws IOException {
        String response = "This is the response";
        boolean redirect=false;
        if(t.getRequestMethod().equalsIgnoreCase("GET")){
            t.sendResponseHeaders(302, response.length());
            HttpURLConnection conn = (HttpURLConnection) new URL("http://localhost:9000")
                .openConnection();
            int status = t.getResponseCode();
            if (status != HttpURLConnection.HTTP_OK) {
                if (status == HttpURLConnection.HTTP_MOVED_TEMP
                    || status == HttpURLConnection.HTTP_MOVED_PERM
                    || status == HttpURLConnection.HTTP_SEE_OTHER)
                    redirect = true;
            }
            if (redirect) {
                String newUrl ="http://www.google.com";
                conn = (HttpURLConnection) new URL(newUrl).openConnection();
                System.out.println("Redirect to URL : " + newUrl);
            }
        }
        t.sendResponseHeaders(200, response.length());
        OutputStream os = t.getResponseBody();
        os.write(response.getBytes());

        os.close();
    }
}

我不知道我做错了什么,我也不确定这是否是最好的方法。

发回 302,添加 Location header 和所需的 URL,浏览器会为您完成所有工作,无需在您的代码中实现任何内容。