2011-12-01 3 views
1

자바 응용 프로그램을 사용하여 vcalendar를 다운로드하려고하는데 특정 링크에서 다운로드 할 수 없습니다.download programaticaly

내 코드는 다음과 같습니다 (: http://www.mysportscal.com/Files_iCal_CSV/iCal_AUTO_2011/f1_2011.ics 예)

URL uri = new URL("http://codebits.eu/s/calendar.ics"); 
InputStream in = uri.openStream(); 

int r = in.read(); 
while(r != -1) { 
    System.out.print((char)r); 
    r = in.read(); 
} 

내가 그것을 작동하는 다른 링크에서 다운로드 할 때. 뭔가 내가 다운로드를 허용하지 않는 이유는, 내가 브라우저와 함께 노력하면 알아낼 수 없다 ...

아무도 도와 줄 수 있습니까?

+0

. uri.openConnection()에서 URLConnection을 확인해보십시오. – Jayan

답변

1

나는이 example에 따라 것입니다. 기본적으로 연결에 대한 응답 코드를 가져옵니다. 리디렉션 인 경우 (예 :이 경우 301) 헤더 위치를 검색하고이를 사용하여 파일에 액세스합니다.

단순한 예 : 파일 이동

URL uri = new URL("http://codebits.eu/s/calendar.ics"); 
HttpURLConnection con = (HttpURLConnection)uri.openConnection(); 
System.out.println(con.getResponseCode()); 
System.out.println(con.getHeaderField("Location")); 

uri = new URL(con.getHeaderField("Location")); 
con = (HttpURLConnection)uri.openConnection(); 
InputStream in = con.getInputStream(); 
+0

URL을 변경할 수는 있지만 프로젝트는 웹 서비스로 작동해야합니다. 누군가가 이와 같은 vcalendar에 링크를 걸면 웹 서비스가 제대로 작동하지 않습니다. –

+0

예 (http://docs.oracle.com/javase/1.5.0/docs/guide/deployment/deployment-guide/upgrade-guide/article-17.html)를 확인하면 올바르게 작동합니다. 고맙습니다. –

+0

걱정할 필요가 없습니다. 뭔가 새로운 것을 배웠습니다 :) – speedRS

0

실제로 어떤 링크가 제공하는지 확인해야합니다. 예를 들어, 이동 한 페이지 일 수 있습니다. 그러면 HTTP 301 코드가 다시 제공됩니다. 브라우저는 자동으로 새 URL로 이동하여 가져올 것을 알게되지만 프로그램은 그렇지 않습니다.

예를 들어 wireshark을 시도하여 브라우저 요청을 할 때 실제 트래픽을 감지 할 수 있습니다.

0

리디렉션이 있다고 생각합니다. ssl에서 브라우저 다운로드는 https://codebits.eu/s/calendar.ics을 확보했습니다. 자동으로 리디렉션이 수행해야 HttpURLConnection를 사용해보십시오 :

HttpURLConnection con = (HttpURLConnection)uri.openConnection(); 
InputStream in = con.getInputStream(); 
관련 문제