タイトル通り、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」についてのご紹介でした。