タイトル通り、Androidアプリで APIを使う方法についてです。
今回は「OkHttp」という HTTP Client を使っています。
参考にさせていただいた記事はこちらから。
OkHttp(基本的なGET・POST) – Qiita
https://qiita.com/naoi/items/8d493f00b0bbbf8a666c
早速ですが、コードはこちらから。
String url = [APIのURL];
Request request = new Request.Builder().
url(url).
build();
OkHttpClient client = new OkHttpClient();
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Request request, IOException e) {
e.printStackTrace();
}
@Override
public void onResponse(Response response) throws IOException {
Log.d("Response", response.body().string());
}
});
こちらはGETの場合の記述方法です。
データの取得は非同期で行っています。
同期処理も行えるようですが、私の環境では実行時にエラーで落ちたので、使用していません。
こちらはPOST処理の場合。
String url = [APIのURL];
MediaType MIMEType = MediaType.parse("application/json; charset=utf-8");
RequestBody requestBody = RequestBody.create(MIMEType, [送信するdata]);
Request request = new Request.Builder().
url(url).
post(requestBody).
build();
OkHttpClient client = new OkHttpClient();
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Request request, IOException e) {
e.printStackTrace();
}
@Override
public void onResponse(Response response) throws IOException {
Log.d("Response", response.body().string());
}
});
GET処理とほぼ同じですね。
違うのは、5行目からの Request の箇所です。
こちらも非同期で処理を行うように記述しています。
が、ここで問題が。
記述が間違っているのか、POST処理で Data がうまく渡せません…。
JSONで記述しているのですが、どうしても渡しているはずのデータが受け取れず。
現在調査中ですが…早く直してしまいたいところです。
解決策が見つけられたら、またご紹介したいと思います!
以上、Androidアプリで API を実行するためのHTTP Client「OkHttp」についてのご紹介でした。