奇妙なjava.net.HttpURLConnectionの動作について助けが必要です
-
21-09-2019 - |
質問
HttpURLConnection を使用して jpg をダウンロードしようとしていますが、非常に特殊なバグに遭遇しました。
URLは次のとおりです。http://www.vh1.com/sitewide/promoimages/shows/m/my_antonio/video/supertrailer/seg_1/320x240.jpg
ブラウザで開くと画像が表示されます。
ただし、HttpURLConnectionを使用すると画像が取得できません...私が受け取ったのは 301 で、非常に奇妙なことに、次のようにリダイレクトされます。 http://wap.vh1.com
それで
con.setInstanceFollowRedirects(true);
//additional stream code here to go and get the stuff found in con
ブラウザに表示される jpg ではなく、wap.vh1.com からテキストをダウンロードします。
これを引き起こしているヘッダーの奇抜さがあると推測していますが、ブラウザー(およびcurlとwgetとそれを指すと私が考えられる他のすべて)。
私はちょうど自分自身を撃つ準備ができているところです、それで、あなたが私を助けてくれれば、私の6歳の娘が父親なしになるのを防ぐことになります。
解決
このサイトはユーザーエージェントに基づいてリダイレクトされます。あなたが接続を開く前にこれを追加、
conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.0.15) Gecko/2009101600 Firefox/3.0.15");
他のヒント
それはそうです。モバイルサイトにリダイレクトされた理由です。明示的にユーザーエージェントを設定してみてください。
より多くの柔軟性を高めるためには、を HTTPコモンズを利用することができますlog4jの...
を通じて>ワイヤーのまた、ユーザエージェント、より要求パラメータを容易に設定することができます。
詳細については、そのチュートリアルを参照してください。
java.netパッケージは、(自動的にクッキーを保存し、送信など)箱から出して必要な機能の多くをサポートしていません。使用ApacheののHttpClient の代わりに