2

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歳の娘が父親を失うのを防ぐことができます。

4

5 に答える 5

4

このサイトは、ユーザーエージェントに基づいてリダイレクトします。接続を開く前にこれを追加し、

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");
于 2009-11-23T22:54:21.897 に答える
1

サーバーは、おそらくUser-Agentヘッダーに基づいて、リクエストをモバイルデバイスからのものとして解釈しているようです。そのため、モバイルサイトにリダイレクトされました。User-Agentを明示的に設定してみてください。

于 2009-11-23T23:04:05.433 に答える
0

私はあなたの特定の問題についてあなたを助けることはできませんが、これが私がすることです:

  • Wiresharkをダウンロードし、Javaアプリケーションから送信されたHTTPリクエストをスニッフィングします

  • リクエストをコピーして貼り付け、telnet(またはWFetchなどのツール)で実行します

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

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

于 2009-11-23T22:58:24.140 に答える
0

柔軟性を高めるために、log4jを介したワイヤの優れたデバッグサポートを備えたhttpcommonsライブラリを利用できます...

また、ユーザーエージェントやその他のリクエストパラメータを簡単に設定できます。

詳細については、チュートリアルを参照してください

于 2009-11-23T23:01:07.273 に答える
0

java.netパッケージは、必要な機能の多くをすぐにサポートしていません(Cookieの自動保存や送信など)。代わりにApacheのhttpClientを使用してください

于 2009-11-23T23:02:32.537 に答える