scalaのHTTPクライアントとしてDispatchが有名の様子。しかし現在Androidで使うには古い0.7系を使うかトリックを使う必要があるとのこと。
別の選択肢として Bee Clientを試した。 java.net.URL のscalaによる軽量なラッパであり、高速かつ省メモリと謳われている。
1. セットアップ
こちらのページにあるように、sbtであればbuild.sbtに依存関係を足すだけ。
proguard の処理中に下のエラーが出た。
$ sbt
> install
...
[error] (android2/compile:proguard) java.io.IOException: Can't write [... (snip) ... /target/classes-android2-compile-0.1.min.jar] (Can't read [... (snip) ... /.ivy2/cache/ch.qos.logback/logback-classic/jars/logback-classic-1.0.13.jar(;;;;!META-INF/MANIFEST.MF,!**/R.class,!**/R$*.class,!**/TR.class,!**/TR$.class,!**/library.properties)] (Duplicate zip entry [logback-classic-1.0.13.jar:org/slf4j/impl/StaticLoggerBinder.class]))
...
SL4JのバインディングがAndroid付属のもの(android.util.Log)と競合している様子。build.sbtからlogback-{core, classic}を除くとパッケージのビルドがうまくいった。
// build.sbt
libraryDependencies ++= Seq(
"uk.co.bigbeeconsultants" %% "bee-client" % "0.21.+",
"org.slf4j" % "slf4j-api" % "1.7.+"
)
resolvers += "Big Bee Consultants" at "http://repo.bigbeeconsultants.co.uk/repo"
2. 動作確認
AndroidManifest.xmlに下のパーミッション設定があるのを確認して、
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
こちらのテスト用Activityを実行したところ、無事にHTMLが端末に表示された。