java—如何在浏览器上显示http get请求中的html

oaxa6hgo  于 2021-07-13  发布在  Java
关注(0)|答案(0)|浏览(175)

我试图用java制作一个简单的代理,在这里我发送一个httpget请求并将响应转发给另一个端口上的客户机。我可以通过在控制台上打印get请求来获得响应。
但是,我无法在浏览器中查看已发送回的响应。

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

public class MyProxy {
    static int localPort = 5000;
    static String url = "www.google.com";

    public static void main(String[] args) throws IOException {
        ServerSocket serverSocket = new ServerSocket(localPort); // proxy acting as a server
        Socket socket = serverSocket.accept(); // Accept connection from port 5000
        Socket webSocket = new Socket(url, 80); // proxy acting as a client

        // Send a GET request
        PrintWriter printWriter = new PrintWriter(webSocket.getOutputStream());
        printWriter.println("GET / HTTP/1.1\n\n");
        printWriter.flush();

        // Read response from server and send it to port 5000
        BufferedReader br = new BufferedReader(new InputStreamReader(webSocket.getInputStream()));
        PrintWriter out = new PrintWriter(socket.getOutputStream());
        String outStr;
        while ((outStr = br.readLine()) != null) {
            out.println(outStr);
            System.out.println(outStr);
        }
        out.flush();
        printWriter.close();
        out.close();
        br.close();
        socket.close();
        serverSocket.close();
        webSocket.close();
    }
}

如何运行代码:
我先运行 main() 方法,然后键入 localhost:5000 在我的浏览器(safari)中。我希望得到呈现的html文件的身体,但浏览器只是卡住了,而加载。
运行代码时会发生什么:
我可以打印响应的标题和html正文,但无法在浏览器上显示html。
我的问题是:get请求响应是通过浏览器发送到端口的。既然响应存在,浏览器就不能读取响应吗?或者浏览器需要自己发送请求才能读取响应?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题