如何在普通Java中创建GET端点?
我的目标是学习如何使用普通Java创建GET端点 我的预期结果是:我可以使用浏览器或邮递员发送GET请求 我的实际结果是:localhost:8080拒绝连接。在我发送GET请求后,Java应用程序进程以退出代码0结束 这是我目前正在使用的代码如何在普通Java中创建GET端点?,java,Java,我的目标是学习如何使用普通Java创建GET端点 我的预期结果是:我可以使用浏览器或邮递员发送GET请求 我的实际结果是:localhost:8080拒绝连接。在我发送GET请求后,Java应用程序进程以退出代码0结束 这是我目前正在使用的代码 package httpserver; import httpserver.config.Configuration; import httpserver.config.ConfigurationManager; import java.io.IOE
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 = "\n\r"; // 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();
}
}
}
封装httpserver;
导入httpserver.config.Configuration;
导入httpserver.config.ConfigurationManager;
导入java.io.IOException;
导入java.io.InputStream;
导入java.io.OutputStream;
导入java.net.ServerSocket;
导入java.net.Socket;
公共类HttpServer{
公共静态void main(字符串[]args){
System.out.println(“服务器启动…”);
ConfigurationManager.getInstance().loadConfigurationFile(“src/main/resources/http.json”);
Configuration conf=ConfigurationManager.getInstance().getCurrentConfiguration();
System.out.printf(“使用端口:%s%n”+
“正在使用WebRoot:%s%n”,conf.getPort(),conf.getWebroot();
试一试{
ServerSocket ServerSocket=newserversocket(conf.getPort());
Socket=serverSocket.accept();
InputStream InputStream=socket.getInputStream();
OutputStream OutputStream=socket.getOutputStream();
字符串html=“”+
"" +
“简单Java HTTP服务器”+
"" +
"" +
“此页面是使用我的简单Java HTTP服务器的服务器”+
"" +
"";
最后一个字符串CRLF=“\n\r”//13,10
String response=“HTTP/1.1 200 OK”+CRLF+//状态行:HTTP\u版本响应\u代码响应\u消息
“内容长度:”+html.getBytes().Length+CRLF+CRLF+//头的末尾
html+
CRLF+CRLF;
write(response.getBytes());
inputStream.close();
outputStream.close();
socket.close();
serverSocket.close();
}捕获(IOE异常){
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();
}
}
}
检查后,发现CRLF反转。应该是
\r\n
。这将进一步帮助您解决问题-