2014-04-18 5 views
1

온라인 pdf 파일의 입력 스트림을 얻으려고하지만 절차가 작동하지 않습니다. URLConnectionapplication/pdf 대신 text/html이라는 URL의 content type을 반환합니다. 당신이 볼 수 있듯이 https://www.dropbox.com/s/ao3up7xudju4qm0/Amalgabond%20Adhesive%20Agent.pdf url은 pdf입니다.URLConnection이 text/html 콘텐츠 유형을 반환합니다.

나는이 때문에 URLConnection에 대해 다음 코드를 사용하고

URL fileUrl; 
try {    
String str = "https://www.dropbox.com/s/ao3up7xudju4qm0/Amalgabond%20Adhesive%20Agent.pdf" 
fileUrl = new URL(str); 
URLConnection connection = fileUrl.openConnection(); 
Log.i("mustang", "Content-type: " + connection.getContentType()); 
InputStream is = fileUrl.openStream(); 
Log.i("mustang", "is.available(): " + is.available()); 

Content Type을 얻고, 내가 버퍼를 구문 분석 할 수 없습니다입니다. 콘텐츠 유형이 text/html 인 이유는 무엇입니까?

감사합니다,

답변

1

드롭 박스는 라이트 박스 (PDF 파일의 미리보기)을 표시 여부를 결정하는 스니핑 사용자 에이전트를 사용합니다. 당신이보고있는 것은 라이트 박스 코드입니다 (당신이 이것을 말할 수있는 내용을 인쇄했다면).

URLConnection connection = fileUrl.openConnection(); 
connection.setRequestProperty("User-Agent", "Wget/5.0"); 

이 일반적으로 보관의 스마트 콘텐츠 미리보기 코드를 오버라이드 (override) :

당신은 같은 줄을 추가하여 같은 wget과 같은 비 대화 형 사용자 에이전트를 지정하는 행을 추가해야합니다.

+0

도움 주셔서 감사합니다. 이제 content type'application/pdf'를 받았지만'inputstream is.available()'이'0'을 보여주었습니다. 이는'URLConnection'이'empty'를 반환하고 있다는 것을 의미합니까? –

+0

필자는 안드로이드에서 이러한 종류의 동작을 보았습니다. 실제로 데이터가 없다는 것을 의미하지는 않습니다. 데이터를 읽으려고 시도해야하므로 데이터가 반환되는지 확인해야합니다. – Petesh

+0

@ Petesh thankx 너희 대답은 일하고있다 !! –