Una carga reintentada tras un desafío del proxy vuelve a necesitar su cuerpo. Para el conector Apache de Jersey 2, seleccione el procesamiento de entidad almacenada en búfer en la configuración con la que se construye ese cliente:

ClientConfig config = new ClientConfig();
config.connectorProvider(new ApacheConnectorProvider());
config.property(ClientProperties.PROXY_URI,
                "http://proxy.example.net:8080");
config.property(ClientProperties.REQUEST_ENTITY_PROCESSING,
                RequestEntityProcessing.BUFFERED);

Realice la carga con el cliente resultante. Estos tipos provienen de los paquetes Jersey client y Apache-connector; establecer una configuración no utilizada no afectaría a la solicitud.

El conector envuelve una entidad almacenada en búfer en BufferedHttpEntity de Apache. Su entidad de streaming sin búfer no es repetible. El almacenamiento en búfer entrega al flujo de autenticación bytes que puede reenviar en lugar de releer un productor ya consumido.

No garantiza que la autenticación termine tras un 407. Algunos esquemas requieren legítimamente varios intercambios, así que revise toda la negociación antes de tratar otro desafío como estado perdido.

Mantenga el tamaño del cuerpo dentro del presupuesto de memoria. Una carga de streaming grande necesita una estrategia de repetición adecuada a esa carga de trabajo; activar el búfer para cada solicitud puede cambiar un fallo de negociación por agotamiento de memoria.

Artículos relacionados