- PR -

HttpClientを利用した別サーバへのリクエスト処理時の画像処理について

投稿者投稿内容
rviper
常連さん
会議室デビュー日: 2004/06/15
投稿数: 34
投稿日時: 2004-07-20 09:33
Jakarta-commonsのHttpClientを利用して別サーバのhtml、jspなどを表示する
プログラムを作成しているのですが、画像が含まれている場合に、
画像を正しく表示することができません。
恐らくgetResponseBodyAsStreamを使用してデータを取得すれば
可能だと思うのですが、どなたか方法をご存知ではないでしょうか?
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2004-07-20 15:03
状況がわかりにくいんですが、Webアプリケーション内でリクエストを他のWebアプリケーションに
中継して実行している、ということでしょうか。であれば、

引用:

恐らくgetResponseBodyAsStreamを使用してデータを取得すれば
可能だと思うのですが、どなたか方法をご存知ではないでしょうか?


その通りです。方法というか、getResponseBodyAsStreamから読み込んだデータをレスポンスの
出力ストリームに書き込むだけですが…
rviper
常連さん
会議室デビュー日: 2004/06/15
投稿数: 34
投稿日時: 2004-07-20 15:30
返信ありがとうございます。
説明不足でした。処理的にはServlet内で別なサーバ上のWebアプリケーションの
実行結果を取得し、Servletの処理結果として返すという処理を作成しています。

ukさんが書かれている通りgetResponseBodyAsStreamで取得した内容を
出力ストリーム(ServletOutputStream)に書き込んでも正しく表示されませんでした。
Servletから出力している内容をパケットキャプチャしてみたのですが、
実際に出力すべき内容と違っていました。chunkでエンコードされているようなのですが、デコードしてみても所々違う部分があります。
どうすれば・・・
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2004-07-20 15:52
もし問題がなければ、HTTP1.0で要求を出してみたらどうでしょうか。そうすれば、チャンク
形式では送ってこないのでは?
rviper
常連さん
会議室デビュー日: 2004/06/15
投稿数: 34
投稿日時: 2004-07-20 15:58
返信ありがとうございます。

HTTP1.0で要求を出してみます。
未記入
大ベテラン
会議室デビュー日: 2003/11/24
投稿数: 121
投稿日時: 2004-07-20 16:13
ヘッダはどのようにしているのでしょうか? 画像の形式をクライアントに
伝える必要があるので、おそらく受け取った Content-Type ヘッダを
そのままクライアントへ返しているはずですよね?
同様に、Transfer-Encoding ヘッダも受け取った通りにクライアントへ
横流ししてあげれば、チャック化されていたとしても問題ないと思います。
(クライアントがHTTP/1.1に対応しているという前提ですが…)
rviper
常連さん
会議室デビュー日: 2004/06/15
投稿数: 34
投稿日時: 2004-07-20 16:44
返信ありがとうございます。

ヘッダの事をすっかり忘れていました(;´Д`)
そうですよね。受け取ったヘッダも投げないとだめですよね(;´Д`)
おばけ
ぬし
会議室デビュー日: 2002/11/14
投稿数: 609
お住まい・勤務地: 東京都江東区
投稿日時: 2004-07-20 17:05
引用:

ヘッダの事をすっかり忘れていました(;´Д`)
そうですよね。受け取ったヘッダも投げないとだめですよね(;´Д`)


Transfer-Encodingのほかには、Content-Typeも大事ですしContent-Lengthも要りますね。
これくらい入れておけば、とりあえずは大丈夫かな?

[ メッセージ編集済み 編集者: おばけ 編集日時 2004-07-20 17:06 ]

スキルアップ/キャリアアップ(JOB@IT)