Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

136
Visualizações
¿Es posible cancelar la solicitud http [GET, POST, etc.] en HttpAsynClient desde HttpClient-5.x?

Estoy usando org.apache.hc.client5.http.impl.async.HttpAsyncClients.create() para crear org.apache.hc.client5.http.impl.async.CloseableHttpAsyncClient para mis solicitudes HTTP/2. Estoy buscando alguna funcionalidad para abortar la solicitud después de leer cierta cantidad de datos del canal de socket.

probé con el método cancel (mayInterruptIfRunning) de la instancia de Future. Pero después de cancelarlo, no puedo obtener los encabezados de respuesta y el contenido descargado.

 Future<SimpleHttpResponse> future = null; CloseableHttpAsyncClient httpClient = null; try { httpClient = httpAsyncClientBuilder.build(); httpClient.start(); future = httpClient.execute(target, asyncRequestProducer, SimpleResponseConsumer.create(), null, this.httpClientContext, this); future.get(10, TimeUnit.SECONDS); } catch (Exception ex) { ex.printStackTrace(); } finally { httpClient.close(CloseMode.GRACEFUL); }

¿Hay alguna otra forma de lograr esto con httpclient-5.x?

Gracias por adelantado.

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Por supuesto que es. Pero debe implementar su propio consumidor de respuesta personalizado que pueda devolver un contenido de mensaje parcial

 try (CloseableHttpAsyncClient httpClient = HttpAsyncClients.createDefault()) { httpClient.start(); final Future<Void> future = httpClient.execute( new BasicRequestProducer(Method.GET, new URI("http://httpbin.org/")), new AbstractCharResponseConsumer<Void>() { @Override protected void start( final HttpResponse response, final ContentType contentType) throws HttpException, IOException { System.out.println(response.getCode()); } @Override protected int capacityIncrement() { return Integer.MAX_VALUE; } @Override protected void data(final CharBuffer src, final boolean endOfStream) throws IOException { } @Override protected Void buildResult() throws IOException { return null; } @Override public void releaseResources() { } }, null, null); try { future.get(1, TimeUnit.SECONDS); } catch (TimeoutException ex) { future.cancel(true); } }
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda