前置き
既存の自作webアプリ向けのbackendを
新規開発するandroidアプリからも利用したかった。
やり方を調べるのに時間がかかっためここにまとめる。
前提条件
開発環境は以下である。
OS | macOS Monterey12.6 |
---|---|
IDE | IntelliJ IDEA 2022.2.2 |
言語 | kotlin |
ビルドツール | gradle |
追記箇所
実際に動作が確認できるまでに追記した箇所を示す。
build.gradle.kt
依存関係の追記。
pathは公式HPから参照した。
https://square.github.io/okhttp/#releases
implementation("com.squareup.okhttp3:okhttp:4.10.0")
AndroidManifest.xml
インターネットへのアクセスを許可する設定を追記する必要がある。
<uses-permission android:name="android.permission.INTERNET" />
MainActivity
公式HPのSampleを参照しつつ追記した。
http通信のような処理は非同期でないと怒られるようなのでThreadを使用している。
また、URLは適宜叩きたいものに変更すること。
https://square.github.io/okhttp/#get-a-url
class MainActivity : FragmentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
Thread {
GetHoge().run("https://hogehoge")
}.start()
}
class GetHoge {
private val client = OkHttpClient()
@Throws(IOException::class)
fun run(url: String): String? {
val request: Request = Request.Builder()
.url(url)
.build()
client.newCall(request).execute().use { response ->
return response.body?.string()
}
}
}
最後に
日本語検索ではokhttpは3でないものの記事しかでてこなかった。
おそらく情報が古い。
やはり公式を見にいくことが大事。
また、個人的にはkotlinですべて書いていきたいものの、
javaで書かれたものが大半で置き換え作業に苦戦した。