この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
Httpライブラリ、Unirest
Unirestとは、lightweightなHttpライブラリです。 以前「unicorn」という名前で開発されていたようですが、先日「Unirest」と名前を変えてリリースされたようです。 シンプルなコードでHttp操作やファイルアップロードができ、Javaのみでなく、PHPやRuby等でも使用することができます。 非常に簡単に使用することができるので、試してみましょう。
環境構築方法
今回使用した動作環境は以下のとおりです。ビルドにMavenを使用するので、インストールしておきましょう。
- OS : MacOS X 10.7.5
- Java : 1.7.0_17
- Maven : 3.0.3
Unirestをインストールして動かす
1.Mavenプロジェクト作成
公式サイトを見ると、Mavenを使用する方法が書いてあります。 Mavenを使用してサンプルプロジェクトを作成し、Unirestをインストールしましょう。(面倒ですが。これ、jarで配布してないんでしょうか?) mvn archetype:createでプロジェクトを作成します。
% mvn archetype:create -DgroupId=com.example -DartifactId=unirest
% cd unirest
2.pox.xmlの編集
Unirestを依存ライブラリに追加するため、unirest/pom.xmlを編集します。 Unirest用repositoryの追加、Unirest(と、それに付随する各種jar)を追加してください。
・
・
<repositories>
<repository>
<id>mashape-releases</id>
<url>http://maven.mashape.com/releases</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.mashape.unirest</groupId>
<artifactId>unirest</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.2.3</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpmime</artifactId>
<version>4.2.3</version>
</dependency>
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20090211</version>
</dependency>
</dependencies>
・
・
pom.xmlが編集できたら、ライブラリをインストールしましょう。 このあとJavaファイルを編集しますが、Eclipseを使用する人は、eclipseコマンドでプロジェクトをEclipse化しましょう。
% mvn install
% mvn eclipse:eclipse //Eclipseを使いたい人。これやったらEclipseでインポートしてください
3.プログラムの記述
sample/src/main/java/com/example/App.javaでUnirestを使用してみましょう。 httpbin.org(HTTPクライアントテストサービス)に対してアクセスし、結果をjsonで取得しています。
package com.example;
import java.util.Map;
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.JsonNode;
import com.mashape.unirest.http.Unirest;
import com.mashape.unirest.http.async.Callback;
public class App {
public static void main(String[] args) {
HttpResponse<JsonNode> res1 =
Unirest.get("http://httpbin.org/user-agent").header("accept", "application/json").asJson();
System.out.println(res1.getBody());
}
}
実行してみるとボディ内容が表示されます。json形式で簡単に習得できるのがわかります。 また、POSTしたい場合はpostメソッドを使うだけです。パラメータを渡したい場合、fieldメソッドをチェーンしてkey-value形式で渡します。
HttpResponse<JsonNode> postRes =
Unirest.post("http://httpbin.org/post")
.header("accept", "application/json")
.field("parameter", "value")
.field("foo", "bar")
.asJson();
System.out.println(postRes.getBody());
非同期で実行することもできます。その場合、Callbackインターフェイスを渡してcomletedメソッドを実装します。
Thread thread =
Unirest.post("http://httpbin.org/post")
.header("accept", "application/json")
.field("param1", "value1")
.field("param2", "value2")
.asJson(new Callback<JsonNode>() {
public void completed(HttpResponse<JsonNode> response) {
int code = response.getCode();
Map<String, String> headers = response.getHeaders();
JsonNode body = response.getBody();
System.out.println(code);
System.out.println(headers);
System.out.println(body);
}
});
まとめ
とても簡単にHttpリクエストを送り、json形式で受け取ることができました。 いろいろな場面で役に立ちそうです。
参考サイトなど
- 公式(Java): http://unirest.io/#java