我正在尝试制作一个可以接受GET和POST HTTP请求的Java服务器。现在,我设法使GET方法起作用。但是我没有设法使POST方法起作用。我的服务器设法读取了请求标头,但似乎未读取消息的正文。即发布的内容。这是代码:

int port = 1991;

        ServerSocket serverSocket = new ServerSocket(port);

        System.err.println("The Server is on and listening on port " + port);
        System.out.println(" ");

        while (true)
        {
            Socket ClientSocketConnection = serverSocket.accept();
            System.err.println("We have established a connection with a client!");
            System.out.println(" ");

            BufferedReader ServerInput = new BufferedReader(new InputStreamReader(ClientSocketConnection.getInputStream()));
            DataOutputStream ServerOutput =new DataOutputStream(ClientSocketConnection.getOutputStream());

            String StringInput;
            int iCount = 0;
            int CountNull = 0;

            while ((StringInput = ServerInput.readLine()) != null)
            {

                System.out.println(StringInput);
            }


现在,我只显示通过套接字发送的所有内容。但是由于某种原因,我只是没有收到请求消息正文,并且我知道正文已发送,因为在chrome中,我有以下内容:



我不确定如何获取“表格数据”。任何帮助将不胜感激!

更新:

这是进一步缩小问题的范围。从发送HTTP请求罚款。使用HTTP POST方法,我们使请求标头为\ r \ n,然后是消息数据。问题是当我的BufferedData变量ServerInput读入\ r \ n(空行)时,它停止了从ServerInput读取。有任何解决这个问题的方法吗?

最佳答案

您需要阅读有关HTTP协议的信息。您可以为此查看HttpServlet api。

Servlet的目的正是从套接字传递到Http协议。您确定要再次做这项工作吗?

10-05 22:41
查看更多