Jakarta CommonsのHttpClientを使う
試したのは、バージョン3.1で、それを使うには、
- commons-codec-1.3.jar
- commons-logging (おそらく)
が必要。
commons-codec-1.3.jarが存在していないと
org.apache.commons.httpclient.util. URIUtil.encodeQuery(encodeQuery(String unescaped, String charset);
を実行(エンコード処理を行う)した際に
java.lang.NoClassDefFoundError: org/apache/commons/codec/DecoderException
となる。
他にも同様に発生する箇所はあるだろう。
ResponseBodyAsString()メソッドをつかった場合
GetMethod method = new GetMethod(・・・);
method.getResponseBodyAsString();
とすると、
WARN [org.apache.commons.httpclient.HttpMethodBase] - Going to buffer response body of large or unknown size. Using getResponseBodyAsStream instead is recommended.
Stringでなく、Streamを使いなさいよと警告されるけれども
↓のようなレスポンスボディを取得する長さのMaxを指定すれば警告はでない。
method.getResponseBodyAsString(1024*2);
ただし、content.lengthを指定するので、リクエストして取得した内容が欠ける
可能性があるかも。固定長もしくは、おおよそのボディの長さが判明している場合
のみ使用しないと危険。