我正在编写一个客户端应用程序,它向服务器发送请求。我使用StartServer批处理文件从Windows启动了我的服务器。现在,服务器期望的请求是HTTP请求。如果我从我的Web浏览器打开一个请求,服务器会看到它并对其做出响应,但我在尝试从Java发送请求时遇到了不好的时间。
例如,命令"http://localhost/?command=reg&person=sophie"
从浏览器启动时工作正常,但是从Java返回FileNotFound异常。
以下是代码:
public class Client {
private Socket clientSocket;
private final int PORT_NUMBER;
private final String HOST_NAME;
private PrintWriter writer;
private BufferedReader reader;
public Client(int PORT_NUMBER, String HOST_NAME){
this.PORT_NUMBER = PORT_NUMBER;
this.HOST_NAME = HOST_NAME;
try {
clientSocket = new Socket(HOST_NAME, PORT_NUMBER);
writer = new PrintWriter(clientSocket.getOutputStream(), true);
reader = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.err.println("Error creating socket!");
}
}
public void registerPerson(String personName) throws IOException{
URL url = new URL("http://localhost/?command=reg&person=sophie");
InputStream in = new BufferedInputStream(url.openStream());
Scanner sc = new Scanner(in);
sc.nextLine();
}
这一行InputStream in = new BufferedInputStream(url.openStream());
返回FileNotFound异常。有什么建议吗?
答案 0 :(得分:0)
您是否尝试过使用127.0.0.1
而不是localhost。可能会出现此问题,因为java无法识别您的环回地址(即localhost
)。
答案 1 :(得分:0)
您是否尝试过以不同方式访问网址?
URL fileURL = new URL("http://localhost/?command=reg&person=sophie");
URLConnection connection = fileURL.openConnection();
connection.connect();
inputStream = new java.io.BufferedInputStream(connection.getInputStream());
另外,使用IP地址而不是localhost是一个好主意,如另一个答案所示。