Luego de tanto trabajar hemos hallado la solución de este dilema que muchos usuarios de este sitio han presentado. Si tienes algo más que aportar no dudes en aportar tu comentario.
- Clase envolvente:
- HttpRequest
public static class HttpRequest.BodyPublishers
extends Object
Implementaciones de BodyPublisher
que implementan varios editores útiles, como publicar el cuerpo de la solicitud desde una Cadena o desde un archivo.
Los siguientes son ejemplos del uso de los editores de cuerpo predefinidos para convertir objetos Java comunes de alto nivel en un flujo de datos adecuado para enviar como cuerpo de solicitud:
// Request body from a StringHttpRequest request =HttpRequest.newBuilder().uri(URI.create("https://foo.com/")).header("Content-Type","text/plain; charset=UTF-8").POST(BodyPublishers.ofString("some body text")).build();// Request body from a FileHttpRequest request =HttpRequest.newBuilder().uri(URI.create("https://foo.com/")).header("Content-Type","application/json").POST(BodyPublishers.ofFile(Paths.get("file.json"))).build();// Request body from a byte arrayHttpRequest request =HttpRequest.newBuilder().uri(URI.create("https://foo.com/")).POST(BodyPublishers.ofByteArray(newbyte[]...)).build();
- Ya que:
- 11
Resumen del método
Modificador y tipo | Método | Descripción |
---|---|---|
static HttpRequest.BodyPublisher |
fromPublisher(Flow.Publisher extends ByteBuffer> publisher) |
Devuelve un editor de cuerpo de solicitud cuyo cuerpo se recupera del Flow.Publisher . |
static HttpRequest.BodyPublisher |
fromPublisher(Flow.Publisher extends ByteBuffer> publisher, |
Devuelve un editor de cuerpo de solicitud cuyo cuerpo se recupera del Flow.Publisher . |
static HttpRequest.BodyPublisher |
noBody() |
Un editor de cuerpo de solicitud que no envía ningún cuerpo de solicitud. |
static HttpRequest.BodyPublisher |
ofByteArray(byte[] buf) |
Devuelve un editor de cuerpo de solicitud cuyo cuerpo es el byte dado. array. |
static HttpRequest.BodyPublisher |
ofByteArray(byte[] buf, |
Devuelve un editor de cuerpo de solicitud cuyo cuerpo es el contenido del byte dado. array de length bytes a partir del especificado offset . |
static HttpRequest.BodyPublisher |
ofByteArrays(Iterable |
Un editor del cuerpo de solicitud que toma datos de un Iterable de matrices de bytes. |
static HttpRequest.BodyPublisher |
ofFile(Path path) |
Un editor del cuerpo de la solicitud que toma datos del contenido de un archivo. |
static HttpRequest.BodyPublisher |
ofInputStream(Supplier extends InputStream> streamSupplier) |
Un editor del organismo de solicitud que lee sus datos de un InputStream . |
static HttpRequest.BodyPublisher |
ofString(String body) |
Devuelve un editor de cuerpo de solicitud cuyo cuerpo es el dado. , convertido usando el UTF_8 conjunto de caracteres. |
static HttpRequest.BodyPublisher |
ofString(String s, |
Devuelve un editor de cuerpo de solicitud cuyo cuerpo es el dado. , convertido usando el juego de caracteres dado. |
Métodos declarados en la clase java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Detalles del método
fromPublisher
publicstaticHttpRequest.BodyPublisher fromPublisher(Flow.Publisher<?extendsByteBuffer> publisher)
Devuelve un editor de cuerpo de solicitud cuyo cuerpo se recupera del Flow.Publisher
. El editor del cuerpo de la solicitud devuelta tiene una longitud de contenido desconocida.
- Nota API:
- Este método se puede utilizar como adaptador entre
y
BodyPublisherFlow.Publisher
, donde se desconoce la cantidad de cuerpo de solicitud que publicará el editor. - Parámetros:
publisher
– el editor responsable de publicar el cuerpo- Devoluciones:
- un BodyPublisher
fromPublisher
publicstaticHttpRequest.BodyPublisher fromPublisher(Flow.Publisher<?extendsByteBuffer> publisher,long contentLength)
Devuelve un editor de cuerpo de solicitud cuyo cuerpo se recupera del Flow.Publisher
. El editor del cuerpo de la solicitud devuelta tiene la longitud de contenido indicada.
Lo dado contentLength
es un número positivo, que representa la cantidad exacta de bytes que publisher
debe publicar.
- Nota API:
- Este método se puede utilizar como adaptador entre
y
BodyPublisherFlow.Publisher
, donde se conoce la cantidad de cuerpo de solicitud que publicará el editor. - Parámetros:
publisher
– el editor responsable de publicar el cuerpocontentLength
– un número positivo que representa la cantidad exacta de bytes que publicará el editor- Devoluciones:
- un BodyPublisher
- Lanza:
IllegalArgumentException
– si la longitud del contenido no es positiva
ofString
publicstaticHttpRequest.BodyPublisher ofString(String body)
Devuelve un editor de cuerpo de solicitud cuyo cuerpo es el dado.
, convertido usando el
StringUTF_8
conjunto de caracteres.
- Parámetros:
body
– la Cadena que contiene el cuerpo- Devoluciones:
- un BodyPublisher
ofString
publicstaticHttpRequest.BodyPublisher ofString(String s,Charset charset)
Devuelve un editor de cuerpo de solicitud cuyo cuerpo es el dado.
, convertido usando el juego de caracteres dado.
String
- Parámetros:
s
– la Cadena que contiene el cuerpocharset
– el juego de caracteres para convertir el string a bytes- Devoluciones:
- un BodyPublisher
ofInputStream
publicstaticHttpRequest.BodyPublisher ofInputStream(Supplier<?extendsInputStream> streamSupplier)
Un editor del organismo de solicitud que lee sus datos de un InputStream
. A Supplier
de InputStream
se utiliza en caso de que la solicitud deba repetirse, ya que el contenido no se almacena en búfer. los Supplier
puede volver null
en intentos posteriores, en cuyo caso la solicitud falla.
- Parámetros:
streamSupplier
– un proveedor de InputStreams abiertos- Devoluciones:
- un BodyPublisher
ofByteArray
publicstaticHttpRequest.BodyPublisher ofByteArray(byte[] buf)
Devuelve un editor de cuerpo de solicitud cuyo cuerpo es el byte dado. array.
- Parámetros:
buf
– el byte array conteniendo el cuerpo- Devoluciones:
- un BodyPublisher
ofByteArray
publicstaticHttpRequest.BodyPublisher ofByteArray(byte[] buf,int offset,int length)
Devuelve un editor de cuerpo de solicitud cuyo cuerpo es el contenido del byte dado. array de length
bytes a partir del especificado offset
.
- Parámetros:
buf
– el byte array conteniendo el cuerpooffset
– el desplazamiento del primer bytelength
– la cantidad de bytes a usar- Devoluciones:
- un BodyPublisher
- Lanza:
IndexOutOfBoundsException
– si el subrango se define como fuera de límites
ofFile
publicstaticHttpRequest.BodyPublisher ofFile(Path path)throwsFileNotFoundException
Un editor del cuerpo de la solicitud que toma datos del contenido de un archivo.
Las verificaciones de permisos del administrador de seguridad se realizan en este método de fábrica, cuando el BodyPublisher
es creado. Se debe tener cuidado de que el BodyPublisher
no se comparte con código que no es de confianza.
- Parámetros:
path
– la ruta al archivo que contiene el cuerpo- Devoluciones:
- un BodyPublisher
- Lanza:
FileNotFoundException
– si no se encuentra la rutaSecurityException
– si se niega la apertura del archivo para su lectura: en el caso del proveedor del sistema de archivos predeterminado del sistema y hay un administrador de seguridad instalado,checkRead
se invoca para comprobar el acceso de lectura al archivo dado
ofByteArrays
publicstaticHttpRequest.BodyPublisher ofByteArrays(Iterable<byte[]> iter)
Un editor del cuerpo de solicitud que toma datos de un Iterable
de matrices de bytes. Un Iterable
se proporciona que suministros Iterator
instancias. Cada intento de enviar la solicitud da como resultado una invocación del Iterable
.
- Parámetros:
iter
– un Iterable de matrices de bytes- Devoluciones:
- un BodyPublisher
nadie
publicstaticHttpRequest.BodyPublishernoBody()
Un editor de cuerpo de solicitud que no envía ningún cuerpo de solicitud.
- Devoluciones:
- un BodyPublisher que se completa inmediatamente y no envía ningún cuerpo de solicitud.
Eres capaz de añadir valor a nuestra información colaborando tu veteranía en las interpretaciones.