Java : HttpRequest.BodyPublishers con ejemplos

HttpRequest.BodyPublishers (Java SE 21 & JDK 21) en Java con ejemplos.
Encontrará ejemplos de código en la mayoría de los métodos de HttpRequest.BodyPublishers.

Nota :


Summary

Implementaciones de BodyPublisher que implementan varios publicadores útiles, como publicar el cuerpo de la solicitud desde una cadena o desde un archivo. (Traducción automática)

Class diagram

Code examples on this page may use node.js as the test server.

// server-post.js

const http = require('http');
const server = http.createServer((req, res) => {

  if (req.method == 'POST') {
    let body = '';
    req.on('data', (chunk) => {
      body += chunk;
    });
    req.on('end', () => {
      console.log('body : ' + body);
      res.end();
    });
  }

});

server.listen(8001);
final var uri = URI.create("http://127.0.0.1:8001/");
final var body = HttpRequest.BodyPublishers.ofString("post text");

final var request = HttpRequest.newBuilder(uri)
        .POST(body)
        .build();
System.out.println(request); // http://127.0.0.1:8001/ POST

try (final var client = HttpClient.newHttpClient()) {
    final var response = client.send(
            request, HttpResponse.BodyHandlers.ofString());

    System.out.println(response); // (POST http://127.0.0.1:8001/) 200
}

// -- node.js --
//$ node server-post.js
//body : post text

Methods

static HttpRequest.BodyPublisher concat (HttpRequest.BodyPublisher... publishers)

Devuelve un BodyPublisher que publica un cuerpo de solicitud que consta de la concatenación de los cuerpos de solicitud publicados por una secuencia de editores. (Traducción automática)

final var uri = URI.create("http://127.0.0.1:8001/");

final var body1 = HttpRequest.BodyPublishers.ofString("abcd");
final var body2 = HttpRequest.BodyPublishers.ofString("XYZ");
final var concatenatedBody = HttpRequest.BodyPublishers.concat(body1, body2);

final var request = HttpRequest.newBuilder(uri)
        .POST(concatenatedBody)
        .header("Content-Type", "text/plain; charset=UTF-8")
        .build();
System.out.println(request); // http://127.0.0.1:8001/ POST

try (final var client = HttpClient.newHttpClient()) {
    final var response = client.send(
            request, HttpResponse.BodyHandlers.ofString());

    System.out.println(response); // (POST http://127.0.0.1:8001/) 200
}

// -- node.js --
//$ node server-post.js
//body : abcdXYZ

static HttpRequest.BodyPublisher fromPublisher (Flow.Publisher<? extends ByteBuffer> publisher)

Devuelve un editor del cuerpo de la solicitud cuyo cuerpo se recupera del Flow.Publisher determinado. (Traducción automática)

final var path = Path.of("R:", "java-work", "aaa.txt");
System.out.println(path); // R:\java-work\aaa.txt

Files.writeString(path, "abcd");

try (final var is = Files.newInputStream(path)) {

    final var uri = URI.create("http://127.0.0.1:8001/");

    final var publisher = HttpRequest.BodyPublishers.ofInputStream(() -> is);
    final var body = HttpRequest.BodyPublishers.fromPublisher(publisher);

    final var request = HttpRequest.newBuilder(uri)
            .POST(body)
            .header("Content-Type", "text/plain; charset=UTF-8")
            .build();
    System.out.println(request); // http://127.0.0.1:8001/ POST

    try (final var client = HttpClient.newHttpClient()) {
        final var response = client.send(
                request, HttpResponse.BodyHandlers.ofString());

        System.out.println(response); // (POST http://127.0.0.1:8001/) 200
    }
}

// -- node.js --
//$ node server-post.js
//body : abcd

static HttpRequest.BodyPublisher fromPublisher (Flow.Publisher<? extends ByteBuffer> publisher, long contentLength)

Devuelve un editor del cuerpo de la solicitud cuyo cuerpo se recupera del Flow.Publisher determinado. (Traducción automática)

final var path = Path.of("R:", "java-work", "aaa.txt");
System.out.println(path); // R:\java-work\aaa.txt

Files.writeString(path, "abcd");
final var length = Files.size(path);

try (final var is = Files.newInputStream(path)) {

    final var uri = URI.create("http://127.0.0.1:8001/");

    final var publisher = HttpRequest.BodyPublishers.ofInputStream(() -> is);
    final var body = HttpRequest.BodyPublishers.fromPublisher(publisher, length);

    final var request = HttpRequest.newBuilder(uri)
            .POST(body)
            .header("Content-Type", "text/plain; charset=UTF-8")
            .build();
    System.out.println(request); // http://127.0.0.1:8001/ POST

    try (final var client = HttpClient.newHttpClient()) {
        final var response = client.send(
                request, HttpResponse.BodyHandlers.ofString());

        System.out.println(response); // (POST http://127.0.0.1:8001/) 200
    }
}

// -- node.js --
//$ node server-post.js
//body : abcd

static HttpRequest.BodyPublisher noBody ()

Un editor del cuerpo de solicitud que no envía ningún cuerpo de solicitud. (Traducción automática)

final var uri = URI.create("http://127.0.0.1:8001/");
final var body = HttpRequest.BodyPublishers.noBody();

final var request = HttpRequest.newBuilder(uri)
        .POST(body)
        .build();
System.out.println(request); // http://127.0.0.1:8001/ POST

try (final var client = HttpClient.newHttpClient()) {
    final var response = client.send(
            request, HttpResponse.BodyHandlers.ofString());

    System.out.println(response); // (POST http://127.0.0.1:8001/) 200
}

// -- node.js --
//$ node server-post.js
//body :

static HttpRequest.BodyPublisher ofByteArray (byte[] buf)

Devuelve un editor del cuerpo de la solicitud cuyo cuerpo es la matriz de bytes dada. (Traducción automática)

final var uri = URI.create("http://127.0.0.1:8001/");

final byte[] buf = "abcd".getBytes();
System.out.println(Arrays.toString(buf)); // [97, 98, 99, 100]

final var body = HttpRequest.BodyPublishers.ofByteArray(buf);
final var request = HttpRequest.newBuilder(uri)
        .POST(body)
        .build();
System.out.println(request); // http://127.0.0.1:8001/ POST

try (final var client = HttpClient.newHttpClient()) {
    final var response = client.send(
            request, HttpResponse.BodyHandlers.ofString());

    System.out.println(response); // (POST http://127.0.0.1:8001/) 200
}

// -- node.js --
//$ node server-post.js
//body : abcd

static HttpRequest.BodyPublisher ofByteArray (byte[] buf, int offset, int length)

Devuelve un editor del cuerpo de la solicitud cuyo cuerpo es el contenido de la matriz de bytes dada de bytes de longitud a partir del desplazamiento especificado. (Traducción automática)

final var uri = URI.create("http://127.0.0.1:8001/");

final byte[] buf = "abcdef".getBytes();
System.out.println(Arrays.toString(buf)); // [97, 98, 99, 100, 101, 102]

final var body = HttpRequest.BodyPublishers.ofByteArray(buf, 2, 3);
final var request = HttpRequest.newBuilder(uri)
        .POST(body)
        .build();
System.out.println(request); // http://127.0.0.1:8001/ POST

try (final var client = HttpClient.newHttpClient()) {
    final var response = client.send(
            request, HttpResponse.BodyHandlers.ofString());

    System.out.println(response); // (POST http://127.0.0.1:8001/) 200
}

// -- node.js --
//$ node server-post.js
//body : cde

static HttpRequest.BodyPublisher ofByteArrays (Iterable<byte[]> iter)

Un editor del cuerpo de solicitud que toma datos de un iterable de matrices de bytes. (Traducción automática)

final var uri = URI.create("http://127.0.0.1:8001/");

final byte[] buf1 = "ab".getBytes();
final byte[] buf2 = "cd".getBytes();
final byte[] buf3 = "efg".getBytes();

System.out.println(Arrays.toString(buf1)); // [97, 98]
System.out.println(Arrays.toString(buf2)); // [99, 100]
System.out.println(Arrays.toString(buf3)); // [101, 102, 103]

final var iter = List.of(buf1, buf2, buf3);
final var body = HttpRequest.BodyPublishers.ofByteArrays(iter);

final var request = HttpRequest.newBuilder(uri)
        .POST(body)
        .build();
System.out.println(request); // http://127.0.0.1:8001/ POST

try (final var client = HttpClient.newHttpClient()) {
    final var response = client.send(
            request, HttpResponse.BodyHandlers.ofString());

    System.out.println(response); // (POST http://127.0.0.1:8001/) 200
}

// -- node.js --
//$ node server-post.js
//body : abcdefg

static HttpRequest.BodyPublisher ofFile (Path path)

Un editor del organismo de solicitud que toma datos del contenido de un archivo. (Traducción automática)

final var path = Path.of("R:", "java-work", "aaa.txt");
System.out.println(path); // R:\java-work\aaa.txt

Files.writeString(path, "abcd");

final var uri = URI.create("http://127.0.0.1:8001/");
final var body = HttpRequest.BodyPublishers.ofFile(path);

final var request = HttpRequest.newBuilder(uri)
        .POST(body)
        .header("Content-Type", "text/plain; charset=UTF-8")
        .build();
System.out.println(request); // http://127.0.0.1:8001/ POST

try (final var client = HttpClient.newHttpClient()) {
    final var response = client.send(
            request, HttpResponse.BodyHandlers.ofString());

    System.out.println(response); // (POST http://127.0.0.1:8001/) 200
}

// -- node.js --
//$ node server-post.js
//body : abcd

static HttpRequest.BodyPublisher ofInputStream (Supplier<? extends InputStream> streamSupplier)

Un editor del cuerpo de solicitud que lee sus datos de un InputStream. (Traducción automática)

final Supplier<InputStream> streamSupplier = () -> {
    final byte[] buf = "abcd".getBytes();
    return new ByteArrayInputStream(buf);
};

final var uri = URI.create("http://127.0.0.1:8001/");
final var body = HttpRequest.BodyPublishers.ofInputStream(streamSupplier);

final var request = HttpRequest.newBuilder(uri)
        .POST(body)
        .build();
System.out.println(request); // http://127.0.0.1:8001/ POST

try (final var client = HttpClient.newHttpClient()) {
    final var response = client.send(
            request, HttpResponse.BodyHandlers.ofString());

    System.out.println(response); // (POST http://127.0.0.1:8001/) 200
}

// -- node.js --
//$ node server-post.js
//body : abcd

static HttpRequest.BodyPublisher ofString (String body)

Devuelve un editor del cuerpo de la solicitud cuyo cuerpo es la cadena dada, convertida utilizando el juego de caracteres UTF_8. (Traducción automática)

final var uri = URI.create("http://127.0.0.1:8001/");
final var body = HttpRequest.BodyPublishers.ofString("post text");

final var request = HttpRequest.newBuilder(uri)
        .POST(body)
        .build();
System.out.println(request); // http://127.0.0.1:8001/ POST

try (final var client = HttpClient.newHttpClient()) {
    final var response = client.send(
            request, HttpResponse.BodyHandlers.ofString());

    System.out.println(response); // (POST http://127.0.0.1:8001/) 200
}

// -- node.js --
//$ node server-post.js
//body : post text

static HttpRequest.BodyPublisher ofString (String s, Charset charset)

Devuelve un editor del cuerpo de la solicitud cuyo cuerpo es la cadena dada, convertida usando el conjunto de caracteres dado. (Traducción automática)

final var uri = URI.create("http://127.0.0.1:8001/");
final var body = HttpRequest.BodyPublishers.ofString(
        "abcd", StandardCharsets.US_ASCII);

final var request = HttpRequest.newBuilder(uri)
        .POST(body)
        .header("Content-Type", "text/plain; charset=US-ASCII")
        .build();
System.out.println(request); // http://127.0.0.1:8001/ POST

try (final var client = HttpClient.newHttpClient()) {
    final var response = client.send(
            request, HttpResponse.BodyHandlers.ofString());

    System.out.println(response); // (POST http://127.0.0.1:8001/) 200
}

// -- node.js --
//$ node server-post.js
//body : abcd

Related posts

To top of page