2009-04-09 7 views
0

URL에서 이미지를 다운로드하려고합니다. 내가 작성한 프로세스는 우리가 다루는 하나의 콘텐츠 제공자를 제외한 모든 사람들을 위해 작동합니다.java.net.URL 및 java.net.URLConnection에 이상한 문제가 발생했습니다.

Firefox를 통해 JPG에 액세스하면 모든 것이 정결 해집니다 (행복 Passover, btw). 내 처리 나 나 중 하나를 사용할 때 : 디버거에서

A) 404 또는

B 얻기를) 나는 URL 라인에서 브레이크 포인트를 설정 (URL의 URL = 새 URL (STR);) 그런 다음 연결이 끝나면 파일을 얻지 만 .jpg가 아니라 일반적인 링크와 물건으로 생성하는 HTML입니다. 리디렉션 코드가 보이지 않습니다. 그것은 ... 다시 200 여기

내 코드입니다으로 제공

URL url = new URL(urlString);    
URLConnection uc = url.openConnection();   
String val = uc.getHeaderField(0); 
System.out.println("FOUND OBJECT OF TYPE:" + contType); 
if(!val.contains("200")){       
    //problem 
} 
else{ 
    is = uc.getInputStream(); 
} 

은 사람이 자연의 건 본 적이 있습니까? 어쩌면 그것은 MIME 형식 문제일지도 모르겠지만 그것은 단지 전체 추측 일뿐입니다 ... 나는 완전히 난처한 상황입니다.

답변

3
if(!val.contains("200")) // ... 

첫째, 난 당신이

을 의미 일부 '200'에 대한 전체 데이터를 검색하는 방법 getResponseCode()

을 제공 HttpURLConnection의 라는이 유용한 클래스를 사용하는 것이 좋습니다 것입니다

  1. 성능 문제 및
  2. 불일치 (이진 파일 일부 '200')
3

WireShark을 사용하여 정확히 어떤 패킷이 앞뒤로 이동하는지 확인해 보셨습니까? 이것은 종종 다른 것을 보는 가장 빠른 방법입니다. 즉 :

  1. 먼저 실행 WireShark로 GIF를 얻을 파이어 폭스를 사용하고
  2. 실행 WireShark로 그것을 얻을 수 있도록 코드를 사용하는 경우.

그런 다음 패킷을 양방향으로 비교하고 대조하면 HTTP 헤더 또는 트래픽의 다른 부분을 문제를 설명하는 다른 것으로 볼 수 있습니다.

4

어쩌면 다른 사람들이 이미지를 핫 링크하거나 대량 다운로드를 허용하지 못하도록 막을 수 있습니다.

일반적으로 HTTP 리퍼러 (자신의 도메인에 속해야 함) 또는 사용자 에이전트 (다운로드 관리자가 아닌 브라우저 여야 함)를 확인합니다. 둘 다 설정하고 다시 시도하십시오. 모든

0

모든 좋은 추측을 포함하지만, "오른쪽"대답 보상, 생각, ivan_pertrovich_ivanovich_harkovich_rostropovitch_o'neil로 이동해야 할 수 있기 때문에 HttpURLConnection의 나는 사실, 그것을 볼 수 있었다 사용, 404가 나오기 전에 먼저 301을 얻었습니다. 이제는 헤더에서 예상되는 내용을이 사람들에게 알리는 문제입니다. 그러면 리다이렉트를 덜받는 경향이 있습니다.

제안 해 주셔서 감사합니다. (내 이름은 정말 이반이지만) ... )

+0

글쎄, 당신은 이런 식으로 이름이 지정됩니다 정말 사람들이, 내 진짜 이름은, 이반 이바노비치 Ivanoff가 아니라 당신이 알아야 할, 바로 추측 러시아의 중간 이름은 (http://en.wikipedia.org/wiki/Patronymic) –

+0

러시아어로 중간 이름의 성질을 잘 알고 있지만 (Grigoryavich) "patronymic"으로 알려졌습니다 ... 어떻게 대답을 더욱 높게 평가할 수 있습니까?! –

관련 문제