2013-03-06 226 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

相關問題