About smegy things


by smeg_head
カレンダー
S M T W T F S
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30

commons HttpClient PostMethod のbody取得が遅い

GetMethod のbody取得は問題ないんだけど、PostMethodを使用したとき、
getResponseBodyを呼出して戻ってくるまで、かなり時間がかかっている。
本来、0.5秒以内のところを、8秒くらいかかっている。
HttpClientのソース取ってきて、eclipseで追いながら見たんだけど、
HttpMethodBase.getResponseBody() の
byte[] buffer = new byte[4096];
int len;
while ((len = instream.read(buffer)) > 0) {
outstream.write(buffer, 0, len);
}

instreamの最後のreadで時間がかかっているみたい。
ステップ実行だから、正確ではないけど、なんでだろう。
HttpMethodBaseの中で、byte[]があるのに、なんでいちいち、streamから
取得しなおしてるんだろう?
最初のgetResponseBodyをしたときは、byte[]のフィールドはnullだったから、streamから読み込み終るのが遅いみたい。
Postの時だけ、java.net.HttpURLConnection使っちゃうかな。
つかれたから、今日は終了。

追記:2006/06/23
client.executeMethod(method);する前に、
method.setContentChunked(true);
をしたら早くなった。^^)
理由は、後で考えよう。。

[PR]
by smeg_head | 2006-06-11 01:11 | java