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