1

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

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.

谁能帮我这个?

4

2 回答 2

0

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

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


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

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

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

于 2013-03-06T14:44:24.613 回答
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();
}
于 2013-03-06T14:35:47.943 回答