Tooltip: unirest - Lightweight HTTP Request Client Libraries

There are a lot of HTTP libraries available in the Java universe like the Apache HttpClient library. Also Java provides the HttpURLConnection class as a standard on-board. They all have in common that I (and thats just my humble opinion ;)) don't like them really because they feel like a way back in 2001.

So today I stumbled over unirest, a simple and lightweight HTTP request client library for Java (and also other other languages like Ruby or C#). It's simple and fluent API reminds me of the way you would do HTTP calls in JavaScript.

I've taken two examples from the unirest website.

HttpResponse<JsonNode> jsonResponse ="")  
  .header("accept", "application/json")
  .queryString("apiKey", "123")
  .field("parameter", "value")
  .field("foo", "bar")

Simple and stylish. There is also a serialisation available, although I'm using GSON and don't need it.

// Only one time
Unirest.setObjectMapper(new ObjectMapper() {  
    private com.fasterxml.jackson.databind.ObjectMapper jacksonObjectMapper
                = new com.fasterxml.jackson.databind.ObjectMapper();

    public <T> T readValue(String value, Class<T> valueType) {
        try {
            return jacksonObjectMapper.readValue(value, valueType);
        } catch (IOException e) {
            throw new RuntimeException(e);

    public String writeValue(Object value) {
        try {
            return jacksonObjectMapper.writeValueAsString(value);
        } catch (JsonProcessingException e) {
            throw new RuntimeException(e);

// Response to Object
HttpResponse<Book> bookResponse = Unirest.get("")  
Book bookObject = bookResponse.getBody();

HttpResponse<Author> authorResponse = Unirest.get("{id}/author")  
    .routeParam("id", bookObject.getId())

Author authorObject = authorResponse.getBody();

// Object to Json
HttpResponse<JsonNode> postResponse ="")  
        .header("accept", "application/json")
        .header("Content-Type", "application/json")