HttpClient4でmixiにつないでみた

こことJavaのHttpClient 4 を触ってみた。
ここのHttpClientでログイン認証を試す(POST)
まるパクリだけど、あまりにもさっくり繋がってびっくりした。

HttpClient3でaddParameterでできてた、パラメータの設定が
一度NameValuePairのリストに詰め込んでから、setEntityでするようになった?
HttpClientとか3とか4とか以前に、触ったことがないからわからんけれど。

HTTPSでつなぐのに、特別な設定はいらない模様?
これはHttpClient3の公式でも
HTTPS通信は、普通のHTTP通信と同じくらいシンプルじゃなきゃいけない」
みたいな事書いてあるし、そうなんだろう。4でめんどくさくするとは思えないしw

それから

// 取得したレスポンスのストリーム(?)をクローズ
response.getEntity().getContent().close();

これをやらないと
HttpClient で例外
こういうことになる。

とりあえず、これで、自分のmixiのトップページが見られたので満足。
以下、ほぼまるパクリなソースコード

public class HttpClientTest {

    public static void main(String[] args) {

        HttpClient httpClient = new DefaultHttpClient();
        HttpPost httpPost = new HttpPost("https://mixi.jp/login.pl");
        HttpPost httpGet = new HttpPost("http://mixi.jp/home.pl");
        List<NameValuePair> params = new ArrayList<NameValuePair>();
        params.add(new BasicNameValuePair("email", "xxxxxxxx@hotmail.co.jp"));
        params.add(new BasicNameValuePair("password", "xxxxxxxxxxxxx"));
        params.add(new BasicNameValuePair("next_url", "/home.pl"));
        try {
            httpPost.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));
            System.out.println("executing request " + httpPost.getURI());
            System.out.println("-------------------------------------");

            HttpResponse response = httpClient.execute(httpPost);

            // レスポンスヘッダーの取得
            int statusCode = response.getStatusLine().getStatusCode();
            System.out.println(statusCode);
            System.out.println("-------------------------------------");
            
            // 取得したレスポンスのストリーム(?)をクローズ
            response.getEntity().getContent().close();
            if (statusCode == 200) {

                response = httpClient.execute(httpGet);

                statusCode = response.getStatusLine().getStatusCode();
                System.out.println(statusCode);

                Header[] headers = response.getAllHeaders();
                for (Header header : headers) {
                    System.out.println(header.getName() + ": " + header.getValue());
                }

                System.out.print(System.getProperty("line.separator"));

                // レスポンスボディの取得
                HttpEntity httpEntity = response.getEntity();
                System.out.println(EntityUtils.toString(httpEntity));
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            // HTTP接続を閉じる(shutdownを実行するとセッションが切れます)
            httpClient.getConnectionManager().shutdown();
        }
    }
}


俺の知ってるJAVAの配色じゃない・・・