我有以下代码,它在我的本地开发服务器上完全正常,但是当我上传到部署服务器时,我总是点击文件未发现异常
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.
有谁能帮我一下吗? 因为它是一个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();
}
我认为@deadlock的注释可能是解决这个问题的关键。
您正在获得FileNotFoundException
,因为远程服务器正在发送404 Not Found响应。最可能的解释是您试图使用错误的URL进行连接。在尝试连接之前打印出URL字符串。
所有的证据都指向服务器正在发送"404 Not Found"响应…对于两个版本的代码。这通常意味着您的URL是错误的。但也有可能是其他东西:
-
您可能在Java和浏览器的情况下使用不同的代理,导致Java情况下到达一些不理解URL的服务器
-
可以想象,服务器正在实施一些反网页抓取机制,并发送404响应给你,因为这认为(正确地)你的请求不是来自web浏览器,