Como lidar com IOException e HttpException em Apache HttpClient.execute (HttpMethod)
-
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.
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.