前の記事JavaからJSON文字列をPOSTで送信するでは標準ライブラリを使って実現していました。 しかし、コードが長くなり見通しが悪いです。
今回はライブラリのOkHttp3を使用して、より簡潔に書くことを目指します。
※2018-12-20 この記事ははてなブログから引っ越しました。 ※2019-04-02 最新のバージョンで試し記事をリライトしました。
OkHttpについて
OkHttpはデフォルトで効率的なHTTPクライアントです。 書き方が簡潔になる他にも有用です。
- HTTP/2サポートにより、同じホストへのすべての要求がソケットを共有できる。
 - (HTTP/2が利用できない場合)コネクションプーリングはリクエストの待ち時間を短縮する。
 - Transparent GZIPはダウンロードサイズを縮小する。
 - 応答キャッシングは、繰り返し要求に対してネットワークを完全に回避する。
 
OkHttp supports
- Android 5.0+ (API level 21+)
 - Java 8+.
 
ライセンス
必要なファイル
この記事で使用したバージョンのJar。
- okhttp-3.14.0.jar
 - okio-2.2.2.jar
 
Jarの追加方法
okhttp.jarは公式サイトからダウンロードできます。

okio.jarはokhttp3.OkHttpClientを実行するときに必要になります。
okhttp.jarと同じくビルドパスを通してください。
Mavenでの追加方法
pom.xmlの<dependencies>に以下を追加してください。
  <dependencies>
+   <dependency>
+     <groupId>com.squareup.okhttp3</groupId>
+     <artifactId>okhttp</artifactId>
+     <version>3.14.0</version>
+   </dependency>
+   <dependency>
+     <groupId>com.squareup.okio</groupId>
+     <artifactId>okio</artifactId>
+     <version>2.2.2</version>
+   </dependency>
  </dependencies>
コード
import java.io.IOException;
import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
public class OkHttpJson {
	public static final MediaType JSON = MediaType.get("application/json; charset=utf-8");
	OkHttpClient client = new OkHttpClient();
	String post(String url, String json) throws IOException {
		RequestBody body = RequestBody.create(JSON, json);
		Request request = new Request.Builder()
			.url(url)
			.post(body)
			.build();
		try (Response response = client.newCall(request).execute()) {
			return response.body().string();
		}
	}
	public static void main(String[] args) throws IOException {
		
		String url = "http://{hostname}/api/login/";
		String json = "{\"account\":\"hoge\", \"pass\":\"piyo\"}";
		OkHttpJson okHttpJson = new OkHttpJson();
		String response = okHttpJson.post(url, json);
		System.out.println(response);
	}
}
標準ライブラリの3分の1程の行数で書くことができました! 短いとメンテナンスが楽になりますね。
MediaType.get()の書き方が少し変わっていました。
おわりに
VSCodeでJavaの開発環境を構築する方法をまとめました。
書籍紹介
新入社員として初めてJavaとサーブレットを勉強していた時、この3冊に大変お世話になりました。 仕事で使う技術の基礎が体系的にまとまっていています。 まずはこの3冊の中でわからないところを読み込んだり調べたりして学べば、成長できるのではと思います。