Android 6.0 API Level 23にしたらapacheのDefaultHttpClientがcannot be resolvedになったのでその場を凌ぐ – Android

[PR]

長らくSDKアップデートぐらいじゃ何もなかったんだけど、今回はアップデートと同時に真っ赤なクラスが!

スクリーンショット 2015-10-08 12.22.43

The import org.apache.http.HttpResponse cannot be resolvedって感じで通信周りがのクラスが居ない模様。

といっても、アナウンスはされてるんですよね。自分がちゃんと調べてないだけで。
5.1.1(lv22)デプ、6.0(lv23)リム。
http://developer.android.com/intl/ja/sdk/api_diff/22/changes.html
http://developer.android.com/intl/ja/sdk/api_diff/23/changes.html

ということで、しっかり対応するならこちらの素敵な記事にあるようにHttpURLConnectionを使いましょう。

Android : Deprecated HTTP Classes on Android5.1
http://yuki312.blogspot.jp/2015/03/android-deprecated-http-classes-on.html

結構前からHttpURLConnection推奨って話はあったと思うけど、Android以前から使われてて情報が多いDefaultHttpClientを結構使ってきてしまった。

でも即対応っていうのはなかなか。引き継ぎ案件とかだと尚更。
そんな時は「org.apache.http.legacy」ってライブラリを使えばその場を凌げるらしい。

Android Studioの場合は、Gradleの依存するライブラリに追加するだけ

android { 
    useLibrary 'org.apache.http.legacy' 
}

参考:http://stackoverflow.com/questions/32071025/apache-http-connection-with-android-6-0-
未だEclipseだぜ!って場合は、SDKにライブラリがあるのでlibsに放り込み!

場所は、Android/Sdk/platforms/android-23/optional

そこに「org.apache.http.legacy.jar」があります。
公式のSDKに用意してくれるツンデレGoogleさん。

参考:http://stackoverflow.com/questions/32328347/how-to-use-legacy-apache-in-eclipse-in-order-to-support-android-m

読み込むと「The type HttpResponse is deprecated」に変化!

スクリーンショット 2015-10-08 12.23.53

Warningはちゃんと出しとく、きっちりGoogleさん。

でも、ちゃんと移行しないとな!