< Java REST API kliens

Java REST API Gson és HttpClient

Szerző: Sallai András

Copyright © Sallai András, 2023

Licenc: CC Attribution-Share Alike 4.0 International

Web: https://szit.hu

A HttpClient

A java.net.http.HttpClient osztály a Java 11-ben lett bevezetve. Előtte a java.net.HttpUrlConnection osztályt használtuk.

Szinkron

import java.io.IOException; import java.net.URI; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; import java.net.http.HttpResponse.BodyHandlers; import java.util.ArrayList; import java.util.Arrays; import com.google.gson.Gson; import com.google.gson.GsonBuilder; public class App { public static void main(String[] args) throws Exception { String text = getEmployees(); printName(text); } public static String getEmployees() throws IOException, InterruptedException { HttpClient client = HttpClient.newHttpClient(); HttpRequest request = HttpRequest.newBuilder() .uri( URI.create("http://[::1]:3000/employees")) .build(); HttpResponse<String> response = client.send(request, BodyHandlers.ofString()); String text = response.body(); return text; } public static void printName(String text) { GsonBuilder builder = new GsonBuilder(); builder.setPrettyPrinting(); Gson gson = builder.create(); Employee[] employeeArray = gson.fromJson(text, Employee[].class); ArrayList<Employee> list = new ArrayList<>(Arrays.asList(employeeArray)); for(Employee employee: list) { System.out.println(employee.name); } } }

Aszinkron

import java.io.IOException; import java.net.URI; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; import java.net.http.HttpResponse.BodyHandlers; import java.util.ArrayList; import java.util.Arrays; import java.util.concurrent.CompletableFuture; import com.google.gson.Gson; import com.google.gson.GsonBuilder; public class App { public static void main(String[] args) throws Exception { String text = getEmployees().join(); printNames(text); } public static CompletableFuture<String> getEmployees() throws IOException, InterruptedException { HttpClient client = HttpClient.newHttpClient(); HttpRequest request = HttpRequest.newBuilder() .uri( URI.create("http://[::1]:3000/employees")) .build(); return client.sendAsync(request, BodyHandlers.ofString()) .thenApply(HttpResponse::body); } public static void printNames(String text) { GsonBuilder builder = new GsonBuilder(); builder.setPrettyPrinting(); Gson gson = builder.create(); Employee[] employeeArray = gson.fromJson(text, Employee[].class); ArrayList<Employee> list = new ArrayList<>(Arrays.asList(employeeArray)); for(Employee employee: list) { System.out.println(employee.name); } } }

Fejrész beállítása

request.setHeader(HttpHeaders.CONTENT_TYPE,"application/json"); request.setHeader(HttpHeaders.AUTHORIZATION, "Bearer " + token);
import java.net.http.HttpRequest; //... String token = "sdfasdfas"; HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("http://valahol")) .GET() .header("Authorization", "Bearer " + token) .build();