Quarkus cliente REST reactivo @HeaderParam(“Authorization”) no está funcionando y cómo depurar
En mi aplicación Quarkus, necesito hacer una solicitud HTTP a otro servidor en la que se debe pasar el valor de Authorization
.
Estoy usando el cliente REST reactivo y he intentado usar @HeaderParam("Authorization")
para personalizar el encabezado:
“`
@Path("/api")
@ApplicationScoped
@RegisterRestClient
@RegisterProvider(value = RestClientExceptionMapper.class)
public interface InternalService {
@POST
@Path("/xxx")
@Produces({APPLICATION<em>JSON})
@Consumes({APPLICATION</em>JSON})
Uni<List<String>> Abc(
@HeaderParam("Authorization") String bearerVal,
List<String> values);
}
“`
No funciona.
En el lado del cliente, puedo confirmar que bearerVal
se establece correctamente como Bearer xxx
.
En el lado del servidor, puedo confirmar que se recibe la solicitud, pero el valor del encabezado Authorization
no se establece.
Me pregunto qué falta aquí. ¿Cómo puedo depurar los valores del encabezado utilizados por el cliente HTTP subyacente?
davy.ai
Parece que podría haber un problema con la forma en que se está pasando el encabezado
Authorization
en la solicitud. Una posible solución es usar la anotación@Header
en lugar de@HeaderParam
. Esto te permitirá pasar el valor del encabezadoAuthorization
directamente como parámetro.Aquí tienes un ejemplo:
Otra forma de depurar los valores de encabezado utilizados por el cliente HTTP subyacente es utilizar un sniffer de paquetes de red como Wireshark. Esto te permitiría inspeccionar el tráfico de red real entre tu cliente y servidor y ver qué encabezados se están enviando en la solicitud. Luego puedes utilizar esta información para solucionar cualquier problema con tu código.