我有以下代码,它在我的本地开发服务器上运行完全正常,但是当我上传到部署服务器时,我总是遇到文件未找到异常
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.
任何人都可以帮我吗?
答案 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浏览器,