commons HttpClient PostMethod のbody取得が遅い
2006年 06月 11日
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);
をしたら早くなった。^^)
理由は、後で考えよう。。
getResponseBodyを呼出して戻ってくるまで、かなり時間がかかっている。
本来、0.5秒以内のところを、8秒くらいかかっている。
HttpClientのソース取ってきて、eclipseで追いながら見たんだけど、
HttpMethodBase.getResponseBody() の
int len;
while ((len = instream.read(buffer)) > 0) {
outstream.write(buffer, 0, len);
}
instreamの最後のreadで時間がかかっているみたい。
ステップ実行だから、正確ではないけど、なんでだろう。
取得しなおしてるんだろう?
Postの時だけ、java.net.HttpURLConnection使っちゃうかな。
つかれたから、今日は終了。
追記:2006/06/23
client.executeMethod(method);する前に、
method.setContentChunked(true);
をしたら早くなった。^^)
理由は、後で考えよう。。
by smeg_head
| 2006-06-11 01:11
| java