【问题标题】:URL given have fileNotFoundException给出的 URL 有 fileNotFoundException
【发布时间】:2013-03-06 14:26:47
【问题描述】:

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

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.

谁能帮我解决这个问题?

【问题讨论】:

  • 您的应用服务器的名称?
  • 抱歉,打错字了。
  • 应用服务器是EatJ服务器
  • 为什么不打印出urlStr 看看里面有什么?
  • 我试过了,这是一个正确的 URL,我使用该 URL 将它粘贴到我的浏览器上,它可以工作。

标签: java url stream filenotfoundexception


【解决方案1】:

因为它是一个 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();
}

【讨论】:

  • 是的...我不认为它会。 conn.getResponseCode() 能给你带来什么价值?
  • 而 404 表示“未找到”。
  • 大家好,感谢您的帮助,我不知道为什么它不起作用,但我已经在后端逻辑中呈现了 HTML。
【解决方案2】:

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

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


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

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

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

    李>

【讨论】:

  • 我试过了,它是一个正确的 URL,我将相同的 URL 粘贴到我的浏览器中,它返回了一个结果。
猜你喜欢
  • 2017-02-18
  • 1970-01-01
  • 2016-11-30
  • 1970-01-01
  • 2015-03-17
  • 1970-01-01
  • 1970-01-01
  • 2017-12-04
  • 1970-01-01
相关资源
最近更新 更多