2021/06/13

[android] HTTPでJSONを取りたい

Android用のライブラリAARが提供されていて、それを起動するとHTTPで内部的に通信をして取得したり指示したりするようになっているものがあるとする。まあ、今の私の状況なんだけどね。

permissionの設定を乗り越えて起動できるようになったのは良かったのだが、HTTPで内部でやりとりをする方法が分からん。

HTTP クライアントを選択する
https://developer.android.com/training/basics/network-ops/connecting#choose-http-client

ネットで検索すると HttpURLConnection がよく出てくるのだが、Retrofit というものを使う例になっているようだ。 HttpURLConnection の方が基本的な雰囲気をかもし出しているが、Retrofit だと JSON なんかもうまく扱ってくれそうなことが書いてあるので、黙って使うことにする。
ただ、概要の方には「HTTPライブラリVolley」と書いてあるので、実はそっちの方が良いのかも。。。
まあよい。必要ならやるだけだ。

Retrofit #Download
https://square.github.io/retrofit/#download

Gradleの場合は implementation を追加すれば良いそうだ。 Android Studio の Project Structure から 検索してもよさそうだ。"retrofit" で検索するとたくさん出てきたので、com.squareup.retrofit2 で始まっているものを選択した。

implementation 'com.squareup.retrofit2:retrofit:2.9.0'

Retrofit のサンプルでは GsonConverterFactory というものを使っていたので、そちらも書くとよいだろう。

implementation 'com.squareup.retrofit2:converter-gson:2.9.0'

他にもコンバータがあるので、必要に応じて使い分けるのだろう。


Introduction に従えば何か動いてくれるんじゃなかろうか。

Introduction
https://square.github.io/retrofit/#introduction

baseUrl と GitHubService の定義からそれっぽい URL にアクセスしてみよう。

https://api.github.com/users/hirokuma

いろいろ返ってきた。

image

あちこちサイトを見たが、結局こちらのと同じような実装になった。

Retrofitの使い方・HTTPリクエスト・サーバー通信【Android・Kotlin】
https://101010.fun/programming/android-try-retrofit.html

私が作ったのはこちら。

https://github.com/hirokuma/AndroidHttpSample1

味も素っ気もないね。Android Studioでプロジェクトを新規作成したところからcommitすればよかったな。
最終的には同じようになってしまったが、一応 Android Developer での書き方と、 Retrofit のサンプルを参考にしていたのだ。サンプルは Android ではないので

 

Android Developerのように suspend fun にするとうまく動かせなかった。コルーチンにしなさい、みたいなエラーになるのだが、理解できていないのだ。

Android での Kotlin コルーチン  |  Android デベロッパー  |  Android Developers
https://developer.android.com/kotlin/coroutines?hl=ja

go言語にもあったが、軽量スレッドみたいなものらしい。昔はスレッドを軽量プロセスと呼んでたこともあったと思うが、スレッドですら生ぬるい時代になったのか。

 

suspend fun というのも何だかわかってないし。Java にはそういうのなかったような気がするが、最近できたんだろうか。
いろいろわかってなくてつらいな。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。