Tartalomjegyzék

< Java REST API kliens

Java REST API Gson és HttpClient

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.

A HttpClient osztály használata rövidebb kódot eredményez.

Szinkron

App.java
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

App.java
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();