Java
HTTP通信

OkHttp(基本的なGET・POST)

More than 1 year has passed since last update.

環境

Java:8
OkHttp:3.7.0

OkHttpとは

AndroidやJavaのアプリケーション用のHTTP/HTTP2.0のクライアント

特徴

  • 軽量である
  • レスポンスをキャッシュできる
  • Android 2.3以降であれば動作可能
  • コネクションプーリングを行い、リクエストの遅延を解消
  • ライセンスは「Apache License, Version 2.0」

インストール

Mavenの場合

<dependency>
  <groupId>com.squareup.okhttp3</groupId>
  <artifactId>okhttp</artifactId>
  <version>3.7.0</version>
</dependency>

Gradleの場合

compile 'com.squareup.okhttp3:okhttp:3.7.0'

前提

Java 7以上

Get

処理の流れ
1. OkHttpClientクラスのオブジェクト生成
2. RequestオブジェクトをBuilderクラスでURLなどを設定しながら生成
3. OkHttpClientクラスのcallメソッドでリクエストの送信準備
4. OkHttpClientクラスのexecuteメソッドでリクエストの送信及び、レスポンス(Responseオブジェクト)の取得
5. ResponseオブジェクトからHTMLなどが取得可能

String url = "http://www.casareal.co.jp";
OkHttpClient client = new OkHttpClient();

Request request = new Request.Builder().url(url).build();
Call call = client.newCall(request);
Response response = call.execute();
ResponseBody body = response.body();

シンプルに書くと下記のように書ける

Request request = new Request.Builder().url(url).build();
Response response = client.newCall(request).execute();
response.body().string();

POST

処理の流れ
1. OkHttpClientクラスのオブジェクト生成
2. MediaTypeクラスのparseメソッドでMIMEタイプなどを事前に用意する
3. RequestBodyクラスで送信データの準備
4. RequestオブジェクトでURLと送信データなどを設定しながら生成(RequestBodyオブジェクトはpostメソッドの引数に渡す)
5.レスポンスの取得などはGETと同じ

OkHttpClient client = new OkHttpClient();
MediaType MIMEType= MediaType.parse("application/json; charset=utf-8");
RequestBody requestBody = RequestBody.create (MIMEType,"{}");
Request request = new Request.Builder().url(url).post(requestBody).build();
Response response = client.newCall(request).execute();

参考

http://square.github.io/okhttp/