给出的URL有fileNotFoundException

时间:2013-03-06 14:26:48

标签: java url stream filenotfoundexception

我有以下代码,它在我的本地开发服务器上运行完全正常,但是当我上传到部署服务器时,我总是遇到文件未找到异常

String urlStr = "http://" + getContext().getRequest().getServerName() +
getContext().getServletContext().getContextPath() + "test.action";
URL url = new URL(urlStr);
InputStream input = url.openStream(); //Error always occurs here, it gives me the correct URL but it says file not found.

任何人都可以帮我吗?

2 个答案:

答案 0 :(得分:0)

因为它的HTTP URL正确的方法如下。

String urlStr = "http://" + getContext().getRequest().getServerName() +
        getContext().getServletContext().getContextPath() + "test.action";
URL url = new URL(urlStr);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
if (conn.getResponseCode() == HttpURLConnection.HTTP_ACCEPTED) { 
    InputStream input = conn.getInputStream();
}

答案 1 :(得分:0)

我认为@ deadlock的评论可能是解决这个问题的关键。

您收到FileNotFoundException,因为远程服务器正在发送404 Not Found响应。最可能的解释是您尝试使用错误的URL进行连接。在尝试连接之前打印出URL字符串。


所有证据都表明服务器正在为这两个版本的代码发送“404 Not Found”响应。这通常意味着您的网址错误。但它也可能是其他东西:

  • 您可能在Java和浏览器案例中使用不同的代理,导致Java案例到达某个不理解URL的服务器。

  • 可以想象,服务器正在实施一些反网络抓取机制,并向您发送404响应,因为您认为(正确地)您的请求不是来自Web浏览器,