Skip to content
Performing HTTP requests to other services
Java Ruby Kotlin Shell
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
gradle/wrapper
src/main/java/io/vertx/howtos/httpclient
.editorconfig
.gitignore
.run.builds.sh
.run.jekyll.sh
.travis.yml
Gemfile
LICENSE
README.adoc
_config.yml
build.gradle.kts
gradlew
gradlew.bat
pom.xml
run.png
settings.gradle.kts

README.adoc

Performing HTTP requests to other services

This document will show you how to perform HTTP requests to other services.

What you will build

You will build a Vert.x application that use the API at https://icanhazdadjoke.com/api and displays a new joke every 3 seconds:

run

The application fits in a single JokeVerticle class.

What you need

  • A text editor or IDE

  • Java 8 higher

  • Maven or Gradle

Create a project

The code of this project contains Maven and Gradle build files that are functionally equivalent.

Using Maven

Here is the content of the pom.xml file you should be using:

Maven pom.xml
link:pom.xml[]

Using Gradle

Assuming you use Gradle with the Kotlin DSL, here is what your build.gradle.kts file should look like:

Gradle build.gradle.kts
link:build.gradle.kts[]

Getting jokes with the Vert.x web client

The Vert.x web client greatly simplifies making HTTP requests compared to the more low-level API found in the Vert.x core API. It does The WebClient class can be found in the io.vertx:vertx-web-client artifact.

To get new jokes, we need to make HTTP GET requests to https://icanhazdadjoke.com/api. To do that every 3 seconds, we will simply use a Vert.x periodic timer.

The API returns simple JSON objects. We can test it using a command-line tool like curl:

$ curl -H "Accept: application/json" https://icanhazdadjoke.com/
{"id":"IJBAsrrzPmb","joke":"What do you call a cow with two legs? Lean beef.","status":200}

Here is the code of the JokeVerticle class:

link:src/main/java/io/vertx/howtos/httpclient/JokeVerticle.java[]
  1. Get a WebClient attached to the current Vert.x instance.

  2. HTTP GET request for path / to host icanhazdadjoke.com, on port 443 (HTTPS).

  3. Do not forget to enable SSL encryption.

  4. Explicitly say that we want JSON data.

  5. The response will automatically be converted to JSON.

  6. We expect a HTTP 200 status code, else it will fail the response.

  7. The body is a JSON object, and we write the result to the console.

Running the application

The JokeVerticle already has a main method, so it can be used as-is to:

  1. create a Vertx context, then

  2. deploy JokeVerticle.

You can run the application from:

  1. your IDE, by running the main method from the JokeVerticle class, or

  2. with Maven: mvn compile exec:java, or

  3. with Gradle: ./gradlew run (Linux, macOS) or gradle run (Windows).

Summary

This document covered:

  1. the Vert.x web client for making HTTP requests,

  2. extracting data from a JSON response,

  3. Vert.x periodic tasks.

You can’t perform that action at this time.