- - PR -
HttpClientを利用した別サーバへのリクエスト処理時の画像処理について
| 投稿者 | 投稿内容 | ||||||||
|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-07-20 17:25
チャンク形式の場合、Content-Lengthは入れても無視されると思います。通常のレスポンス でもサーブレットコンテナが勝手につけることが多いので、わざわざ設定する必要もないと 思いますが。 とはいっても、特に問題がない限りレスポンスヘッダはすべて中継したほうがいいと思います。 | ||||||||
|
投稿日時: 2004-07-20 17:36
ああ、確かにチャンクだとそうですね。
そうなんですか? 以前WebLogic 7.1では付けてくれなかった気が・・・。 とは言っても、もはや1年以上前の出来事なので、うろ覚えですが | ||||||||
|
投稿日時: 2004-07-20 17:46
とりあえずヘッダを全部中継するように、変更してみたのですが、やっぱり画像は表示されません・・・
パケットキャプチャーして内容を見てみると、画像の開始データがすでに違っているのですが、それでもいいんでしょうか? 実際に画像を表示するHTMLを直接たたいた場合とキャプチャーしている内容が 違うのでこのままでは表示されないような・・・(;´Д`) | ||||||||
|
投稿日時: 2004-07-20 17:49
処理は以下のように行っています。
gm = new GetMethod( url ); //ページ取得開始 ret = client.executeMethod(gm); head = gm.getResponseHeaders(); for(int i = 0; i < head.length; i++) { res.setHeader(head[i].getName(), head[i].getValue()); } InputStream in = gm.getResponseBodyAsStream(); BufferedReader bf = new BufferedReader( new InputStreamReader(in) ); //データ出力 while(bf.ready()) { w = bf.readLine(); if( w == null || (w != null && w.equals("")) ) break; os.print(w); } //コネクションを開放 gm.releaseConnection(); | ||||||||
|
投稿日時: 2004-07-20 17:49
http://edocs.beasys.co.jp/e-docs/wls/docs81/servlet/progtasks.html#159442 7.0のドキュメントにも同じことが書いてあるので、もしかして出力ストリームのフラッシュ とかしていませんか? | ||||||||
|
投稿日時: 2004-07-20 17:52
Reader系のクラスを使うと、バイナリデータを文字データとして読んでしまいますよ。 ストリームデータをそのまま出力してください。 | ||||||||
|
投稿日時: 2004-07-20 18:15
おお〜〜〜すごい!こんなことが理由だったんですね知らずにフラッシュしてましたね。 というか、フラッシュした方が良いと、自分としては思ってました。 でも、WLSは明示的にフラッシュするとヘッダを付けてくれないんですねえ。。。 ありがとうございます。 こんな挙動があるなんて、非常に勉強になります | ||||||||
|
投稿日時: 2004-07-20 18:23
返信ありがとうございます。
すいません。思いっきり勘違いをしていました。 単純にInputStreamからbyte配列で取得して、そのままwriteして あげればよかっただけですね(;´Д`) 何年、この業界で仕事してるんだろ俺・・・ とりあえず無事に表示出来ました。みなさん有難う御座います。 | ||||||||
