Como lidar com IOException e HttpException em Apache HttpClient.execute (HttpMethod)

StackOverflow https://stackoverflow.com/questions/1189565

  •  19-09-2019
  •  | 
  •  

Pergunta

A documentação (copiado abaixo) não diz muito sobre o que IOException e HttpException meios ao seu contexto.

A minha pergunta é: depois de uma IOException ocorre em um método HttpClient.execute (HttpMethod), eu tenho que descartar o objeto e criar um novo HttpClient, a fim de executar métodos de novo? Ou ainda é utilizável (o objeto HttpClient) para executar métodos após algumas destas exceções ocorrem?

executeMethod

public int executeMethod(HttpMethod method)
                  throws IOException,
                         HttpException
Executes the given HTTP method.
Parameters:
method - the HTTP method to execute.
Returns:
the method's response code
Throws:
IOException - If an I/O (transport) error occurs. Some transport exceptions can be recovered from.
HttpException - If a protocol exception occurs. Usually protocol exceptions cannot be recovered from.
Foi útil?

Solução

Você pode reutilizar o objeto HttpClient tantas vezes quanto quiser. Eu estou trabalhando com a versão 3.0, e não pode falar para se ou não isso mudou nas versões mais recentes.

No que diz respeito às excepções, os comentários são dirigidas mais no HttpMethod do que o cliente.

O que significa por "Algumas exceções de transporte pode ser recuperado", é que você pode ser capaz de reenviar o pedido e obter uma resposta válida. IOExceptions tendem a acontecer quando você não pode enviar um pedido ou não receber uma resposta do servidor (por exemplo, o servidor está em baixo, ou ele não pode lidar com todos os pedidos que está a receber).

O que significa por "Normalmente exceções protocolo não podem ser recuperados a partir de", é que o servidor que você está fazendo uma solicitação HTTP para não está enviando uma resposta que atenda o protocolo HTTP (s). Normalmente, reenviar o pedido não irá produzir um resultado diferente.

Eu percebo esta resposta é provavelmente um pouco tarde para ser útil para você, mas os futuros leitores podem ainda beneficiar.

Esta é um guia útil na manipulação de exceção com HttpClient (legacy versões qualquer maneira). Pode se movimentar, então aqui está um de pesquisa útil para encontrar a página.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top