前の記事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冊の中でわからないところを読み込んだり調べたりして学べば、成長できるのではと思います。