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

이름 귀하의 응용 프로그램 서버의? –

+0

죄송합니다. 오타였습니다. – user2140338

+0

응용 프로그램 서버가 EatJ 서버입니다. – user2140338

답변

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

+0

예 ... 나는 그렇게 생각하지 않았습니다. 'conn.getResponseCode()'는 어떤 가치를 제공합니까? –

+0

Opps, 내가 잘못 본다. sgp15 님, SGP에 감사드립니다. – user2140338

0

@ deadlock의 의견은 아마도 이것을 해결하는 열쇠라고 생각합니다.

원격 서버가 404 찾을 수 없음 응답을 보내므로 FileNotFoundException이 표시됩니다. 가장 가능성있는 설명은 잘못된 URL을 사용하여 연결을 시도하고 있다는 것입니다. 연결하기 전에 URL 문자열을 인쇄하십시오.


모든 증거는 서버가 두 버전의 코드 모두에서 "404 찾을 수 없음"응답을 보내고 있음을 나타냅니다. 이것은 일반적으로 URL이 잘못되었음을 의미합니다.

  • 당신은 URL을 이해하지 못하는 일부 서버에 도달하는 자바 케이스의 결과로, 자바와 브라우저의 경우 다른 프록시를 사용하고있을 수 있습니다 : 그것은 다른 일을 할 수 있도록 그러나 그것은 또한 가능하다.

  • 서버가 메커니즘을 긁어 일부 안티 웹을 구현하고, 당신에게 당신의 요청은 웹 브라우저에서 오는되지 않습니다이 (바르게) 생각 왜냐하면 404 개 응답을`보내는 것을 생각할 수있다,

+0

나는 그것을 시도했다, 그것은 정확한 URL이다, 나는 나의 브라우저에 같은 URL을 붙여 넣었다. 그것은 나에게 결과를 돌려 준다. – user2140338