[英]strange problem with java.net.URL and java.net.URLConnection
我正在嘗試從URL下載圖像。 我編寫的過程適用於每個人,除了我們正在處理的一個內容提供商之外。
當我通過Firefox訪問其JPG時,所有內容看起來都清晰(快樂的逾越節,順便說一句)。 但是,當我使用自己的流程時,我要么:
A)得到404或
B)在調試器中,當我在URL行上設置斷點(URL url = new 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();
}
有人看到過這種性質的東西嗎? 我在想,也許這是一些啞劇類型的問題,但這只是一個總的猜測……我完全感到困惑。
也許網站只是在使用某種保護措施,以防止他人熱鏈接其圖像或禁止大量下載。
他們通常檢查HTTP引薦來源網址(必須來自其自己的域)或用戶代理(必須是瀏覽器,而不是下載管理器)。 設置兩個並重試。
您是否嘗試過使用WireShark來確切查看正在往返的數據包? 這通常是最快的方法來了解不同之處。 那是:
然后在兩個方向上對數據包進行比較和對比,我幾乎保證您會在HTTP標頭或流量的其他部分看到不同的內容來解釋問題。
if(!val.contains("200")) // ...
首先,我建議您使用這個有用的類HttpURLConnection ,它提供方法getResponseCode()
在整個數據中搜索“ 200”表示
所有好的猜測,但我認為“正確”的答案是必須去ivan_pertrovich_ivanovich_harkovich_rostropovitch_o'neil,因為使用HttpURLConnection可以看到,實際上,在獲得404之前,我首先得到了301。現在,只需從這些人那里找出他們在標題中的期望,這將使他們不太願意重定向我。
謝謝你的建議。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.