【androidjava】OKHttpを同期して使う

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にも同じ内容があるので試しに動かしてみて

ください。

>株式会社シーポイントラボ

株式会社シーポイントラボ

TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:〒432-8003
   静岡県浜松市中央区和地山3-1-7
   浜松イノベーションキューブ 315
※ご来社の際はインターホンで「316」をお呼びください

CTR IMG