質問

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");

他のヒント

サーバーはおそらくUser-Agentヘッダに基づいて、モバイルデバイスから来てあなたの要求を解釈するように

それはそうです。モバイルサイトにリダイレクトされた理由です。明示的にユーザーエージェントを設定してみてください。

私はあなたの特定の問題についてお手伝いすることはできませんが、私なら次のようにします。

  • ダウンロード ワイヤーシャーク, 、Java アプリケーションによって送信された HTTP リクエストを傍受します。

  • リクエストをコピー/ペーストし、telnet (または次のようなツール) で実行します。 Wフェッチ)

  • リクエスト ヘッダーをいじって、動作が変わるかどうかを確認します。

(サイトはユーザー エージェント ヘッダーなどに基づいてリクエストを選別しているのではないかと思います)

java.netパッケージは、(自動的にクッキーを保存し、送信など)箱から出して必要な機能の多くをサポートしていません。使用ApacheののHttpClient の代わりに

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top