2013-03-06 138 views
1

我有下面的代码,它的工作原理完全罚款我的本地开发服务器上,但是当我上传到部署服务器,我总是打文件未发现异常URL有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. 

谁能帮助我有了这个?

+0

名称你的应用服务器? – 2013-03-06 14:32:37

+0

对不起,这是一个错字。 – user2140338 2013-03-06 14:32:38

+0

应用程序服务器是EatJ服务器 – user2140338 2013-03-06 14:32:59

回答

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(); 
} 
+0

谢谢Stephan, 但它仍然不起作用 – user2140338 2013-03-06 14:44:04

+0

是的......我不认为会这样。 'conn.getResponseCode()'给你什么值? – 2013-03-06 14:45:15

+0

Opps,我看错了,它是由sgp15,谢谢SGP :) – user2140338 2013-03-06 14:46:42

0

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

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


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

  • 您可以在Java和浏览器的情况下使用不同的代理,导致了Java的情况下达到的一些服务器不理解的URL。

  • 可以想象的是,服务器正在实施一些反网页抓取机制,再送你404个回复〜因为这个认为(正确),你的请求不从网络浏览器的到来,

+0

我试过了,它是一个正确的URL,我将相同的URL粘贴到我的浏览器中,它返回给我一个结果。 – user2140338 2013-03-06 15:34:16

相关问题