2022-03-18
androidではOKHttpというお手軽なライブラリを使うことでAPIにアクセスして情報を取得することができます。
性能的にはHTTPUrlconnectionと比べると速度もアプリサイズも違いはありません。
ただデータを取得するだけならHTTPUrlconnectionでもいいじゃんという声もありますが
こちらは比較的短いコードで処理をまとめることができるのでその点ではこちらに軍配が上がります。
使用方法は、まずGradleでimplementationを設定する必要があります。
implementation 'com.squareup.okhttp3:okhttp:3.10.0'
syncで成功した後、APIを呼び出すのに必須なクライアントとリクエストを先に作ります。
その後にリクエストを書いていきます。
※今はAPIで要素を呼び出すだけなので、urlのみになっています。
client.newCall(request).execute()とありますが、これは同期的にAPIを叩いて呼び出す
仕掛けになっています。
public class OkHttp{ public String getWithUrlString(String url) throws IOException { OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(url) .build(); Response response = client.newCall(request).execute(); return response.body().string(); } }
また、インスタンスを作って実行したい場合は元のメソッドにthrow IOException
を追加してあげる必要があります。
public void textSet() throws IOException { OkHttp okh = new OkHttp(); String yesterday_res = okh.getWithUrlString("http://nantokakantoka.php"); }
非同期で実行したい場合はexecuteに変更する必要があります。
client.newCall(request).enqueue(new Callback() { @Override public void onFailure(Request request, IOException e) { } @Override public void onResponse(Response response) throws IOException { } });
こちらを使う場合はレスポンスが遅く帰ってくるので、
受取先が時間差でnullになってしまいますが、別スレッドで受け取ることで
解消することが出来ます。
以上でOKHttpの基本的な使い方は終了です。
チュートリアルやQiitaにも同じ内容があるので試しに動かしてみて
ください。