无法从java服务器应用程序获取响应
我有下面的代码,这是一个非常基本的服务器。在浏览器中,我放置了如下内容:localhost:6789/xxxx。当应用程序运行时,它确实从客户端读取请求,但随后会显示消息“无法访问此站点”,并且应用程序会引发异常。回应客户的最佳方式是什么无法从java服务器应用程序获取响应,java,http,serversocket,Java,Http,Serversocket,我有下面的代码,这是一个非常基本的服务器。在浏览器中,我放置了如下内容:localhost:6789/xxxx。当应用程序运行时,它确实从客户端读取请求,但随后会显示消息“无法访问此站点”,并且应用程序会引发异常。回应客户的最佳方式是什么 import java.net.*; import java.io.*; import java.net.Socket; public class URLConnection { public static void main(String[] ar
import java.net.*;
import java.io.*;
import java.net.Socket;
public class URLConnection {
public static void main(String[] args)throws IOException {
String clientSentence;
ServerSocket welcomeSocket = new ServerSocket(6789);
while (true) {
Socket connectionSocket = welcomeSocket.accept();
BufferedReader inFromClient =
new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));
DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream());
clientSentence = inFromClient.readLine();
System.out.println("Received: " + clientSentence);
outToClient.writeBytes("HTTP/1.1 200 OK");
}
}
}
您必须关闭OutputStream:
while (true) {
Socket connectionSocket = welcomeSocket.accept();
BufferedReader inFromClient =
new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));
DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream());
clientSentence = inFromClient.readLine();
System.out.println("Received: " + clientSentence);
outToClient.writeBytes("HTTP/1.1 200 OK");
outToClient.close();
}
注意
- 请求不一定是HTTP 1.1,因此您的响应将无效
while (true) {
Socket connectionSocket = welcomeSocket.accept();
BufferedReader inFromClient =
new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));
DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream());
while(true) {
clientSentence = inFromClient.readLine();
if (clientSentence != null && clientSentence.trim().isEmpty()) {
break;
} else {
System.out.println("Received: " + clientSentence);
}
}
outToClient.writeBytes("HTTP/1.1 200 OK\n\nHello world");
outToClient.close();