如何在纯Java中创建GET端点

  • 本文关键字:创建 GET 端点 Java java
  • 更新时间 :
  • 英文 :


我的目标是学习如何使用纯Java创建GET端点。

我的预期结果是:我可以使用浏览器或Postman发送GET请求。

我的实际结果是:localhost:8080拒绝连接。在我发送GET请求后,Java应用程序进程以退出代码0结束。

这是我目前正在使用的代码。

package httpserver;
import httpserver.config.Configuration;
import httpserver.config.ConfigurationManager;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class HttpServer {
public static void main(String[] args) {
System.out.println("Server starting...");
ConfigurationManager.getInstance().loadConfigurationFile("src/main/resources/http.json");
Configuration conf = ConfigurationManager.getInstance().getCurrentConfiguration();
System.out.printf("Using Port: %s%n" +
"Using WebRoot: %s%n", conf.getPort(), conf.getWebroot());
try {
ServerSocket serverSocket = new ServerSocket(conf.getPort());
Socket socket = serverSocket.accept();
InputStream inputStream = socket.getInputStream();
OutputStream outputStream = socket.getOutputStream();
String html = "<html>" +
"<head>" +
"<title>Simple Java HTTP Server</title>" +
"</head>" +
"<body>" +
"<p>This page was server using my Simple Java HTTP Server</p>" +
"</body>" +
"</html>";
final String CRLF = "nr"; // 13, 10
String response = "HTTP/1.1 200 OK" + CRLF + // Status Line : HTTP_VERSION RESPONSE_CODE RESPONSE_MESSAGE
"Content-Length: " + html.getBytes().length + CRLF + CRLF + // end of HEADER
html +
CRLF + CRLF;
outputStream.write(response.getBytes());
inputStream.close();
outputStream.close();
socket.close();
serverSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

您的代码在提供第一个连接后就完成了。您需要将accept包含在一个循环中,例如:

public class HttpServer {
public static void main(String[] args) {
System.out.println("Server starting...");
ConfigurationManager.getInstance().loadConfigurationFile("src/main/resources/http.json");
Configuration conf = ConfigurationManager.getInstance().getCurrentConfiguration();
System.out.printf("Using Port: %s%n" +
"Using WebRoot: %s%n", conf.getPort(), conf.getWebroot());
try {
ServerSocket serverSocket = new ServerSocket(conf.getPort());
while (true) { // Infinte loop
Socket socket = serverSocket.accept();
InputStream inputStream = socket.getInputStream();
OutputStream outputStream = socket.getOutputStream();

String response = ...;
outputStream.write(response.getBytes());
inputStream.close();
outputStream.close();
socket.close();
}
serverSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

最新更新