url.openStream()上的FileNotFound

时间:2014-02-06 19:55:57

标签: java sockets url

我正在编写一个客户端应用程序,它向服务器发送请求。我使用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异常。有什么建议吗?

2 个答案:

答案 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是一个好主意,如另一个答案所示。