HTTPアクセスのコーディング方法の違いによるUserAgentの差異

とある新聞社のWebサイトにて、自前のAndroidアプリでWebサイトを見ようとするとリダイレクトされるようになった。
(Android用サイトではなく、新聞社の専用Androidアプリの紹介ページに飛ぶという…。)

そこで、クライアントのUserAgentを見てWebサイト側で何かしているのだろうと考え、少し調べてみた。

※調査に使用した端末はNexus S (2.3.6)
※UserAgentの指定は特に行っていない

1. Java標準のHTTP接続API (java.net.HttpURLConnection) を使った場合

1Dalvik/1.4.0 (Linux; U; Android 2.3.6; Nexus S Build/GRK39F)

2. Android標準のHTTP接続API (org.apache.http.client.HttpClient) を使った場合

1Apache-HttpClient/UNAVAILABLE (java 1.4)

3. Android標準ブラウザやWebViewを使った場合

1Mozilla/5.0 (Linux; U; Android 2.3.6; ja-jp; Nexus S Build/GRK39F) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1

冒頭のWebサイトでは、1.と3.の方法だとHTTPレスポンスコード 307 が返り、2.の方法だとPCと同じHTMLが返ってきた。
おそらくサーバ側でUserAgentに"Android"というワードがあるかチェックしているのだろう。