Creare un client HTTP in Java con Vert.x
Abbiamo già parlato di Vert.x, guardando alla parte server.
Ma Vert.x dispone anche di una parte client, con la quale creare delle richieste HTTP e HTTP/2.
Oggi vediamo un esempio in Java; non esploreremo tutte le possibilità, visto che la libreria è molto completa.
Vedremo come interrogare una url remoto che espone i dati in formato JSON (partendo da un array).
Prima di tutto aggiungiamo una dipendenza a Maven (se lo usate):
<dependency>
<groupId>io.vertx</groupId>
<artifactId>vertx-web-client</artifactId>
<version>3.7.1</version>
</dependency>
Questo il codice:
import io.vertx.core.Vertx;
import io.vertx.core.json.JsonArray;
import io.vertx.core.json.JsonObject;
import io.vertx.ext.web.client.HttpResponse;
import io.vertx.ext.web.client.WebClient;
import io.vertx.ext.web.client.WebClientOptions;
import io.vertx.ext.web.codec.BodyCodec;
public class Main {
public static void main(String[] args) {
Vertx vertx = Vertx.vertx();
WebClientOptions options = new WebClientOptions()
.setUserAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:67.0) Gecko/20100101 Firefox/67.0");
options.setKeepAlive(false);
WebClient client = WebClient.create(vertx, options);
client.get(80, "www.sito.com", "/file.php")
.as(BodyCodec.jsonArray())
.send(ar -> {
if (ar.succeeded()) {
HttpResponse<JsonArray> response = ar.result();
JsonArray body = response.body();
System.out.println(response.statusCode());
for (int i = 0; i < body.size(); i++) {
JsonObject obj = body.getJsonObject(i);
System.out.println(obj.getString("title"));
}
} else {
System.out.println("ERRORE: " + ar.cause().getMessage());
}
});
}
}
In questo esempio abbiamo settato anche lo user-agent, ma non è obbligatorio.
Sotto iteriamo sull'array JSON con JsonArray, e ad ogni iterazione andiamo a prendere il corrispettivo JsonObject.
Enjoy!
java vertx json jsonarray jsonobject webclient http
Commentami!