java写http服务器直可以post方式请求的示例代码
以下是一个简单的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服务器将返回包含请求体的响应
原文地址: https://www.cveoy.top/t/topic/fFkD 著作权归作者所有。请勿转载和采集!