以下是一个简单的Java HTTP服务器示例代码,支持POST方式请求:

import java.io.*;
import java.net.*;
import java.util.*;

public class HttpServer {
    public static void main(String[] args) throws Exception {
        // 创建服务器套接字并监听指定端口
        ServerSocket serverSocket = new ServerSocket(8080);
        System.out.println("Server started on port 8080...");

        while (true) {
            // 接受客户端连接请求并创建套接字
            Socket socket = serverSocket.accept();
            System.out.println("Client connected: " + socket.getInetAddress());

            // 读取HTTP请求内容
            BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            String line;
            StringBuilder request = new StringBuilder();
            while ((line = reader.readLine()) != null && !line.isEmpty()) {
                request.append(line).append("\r\n");
            }
            System.out.println("Request: " + request);

            // 解析HTTP请求
            StringTokenizer tokenizer = new StringTokenizer(request.toString());
            String method = tokenizer.nextToken().toUpperCase();
            String path = tokenizer.nextToken();
            String version = tokenizer.nextToken();

            // 处理POST请求
            if ("POST".equals(method)) {
                // 读取请求体
                StringBuilder requestBody = new StringBuilder();
                while (reader.ready()) {
                    requestBody.append((char) reader.read());
                }
                System.out.println("Request body: " + requestBody);

                // 构造HTTP响应
                StringBuilder response = new StringBuilder();
                response.append("HTTP/1.1 200 OK\r\n");
                response.append("Content-Type: text/plain\r\n");
                response.append("Content-Length: ").append(requestBody.length()).append("\r\n");
                response.append("\r\n");
                response.append(requestBody);

                // 发送HTTP响应
                BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
                writer.write(response.toString());
                writer.flush();
                System.out.println("Response: " + response);
            }

            // 关闭套接字和流
            socket.close();
            reader.close();
        }
    }
}

该HTTP服务器接收客户端连接请求并读取HTTP请求内容,然后解析HTTP请求中的方法、路径和协议版本。如果是POST请求,则读取请求体并返回响应。响应为HTTP/1.1 200 OK,包含Content-Type和Content-Length头信息以及请求体内容。

在该示例中,服务器监听的端口为8080。您可以将其更改为其他端口。要测试该服务器,可以使用curl命令或其他HTTP客户端发送POST请求。例如,您可以使用以下命令向该服务器发送POST请求:

curl -X POST -d "Hello, world!" http://localhost:8080/

该命令向http://localhost:8080/发送POST请求,请求体为"Hello, world!"。该HTTP服务器将返回包含请求体的响应

java写http服务器直可以post方式请求的示例代码

原文地址: https://www.cveoy.top/t/topic/fFkD 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录