如何在Apache HttpClient.execute(HttpMethod)中处理IOException和HttpException

时间:2009-07-27 17:35:07

标签: httpclient

文档(下面复制)并未详细说明IOException和HttpException在其上下文中的含义。

我的问题是:在HttpClient.execute(HttpMethod)方法中发生IOException之后,我是否必须丢弃该对象并创建一个新的HttpClient才能再次执行方法?或者是否仍然可以使用(HttpClient对象)在发生某些异常后执行方法?

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.

1 个答案:

答案 0 :(得分:4)

您可以根据需要多次重复使用HttpClient对象。我正在使用3.0版本,并且无法说明在最近的版本中这是否发生了变化。

关于例外情况,评论更多地指向HttpMethod而不是客户。

它意味着什么,“某些传输异常可以从中恢复”,是您可以重新发送请求并获得有效响应。 IOExceptions往往发生在您无法发送请求或未收到服务器响应时(例如服务器已关闭,或无法处理它正在接收的所有请求)。

这意味着“通常协议异常无法从中恢复”,即您发出HTTP请求的服务器不会发送符合HTTP协议的响应。通常,重新发送请求不会产生不同的结果。

我意识到这个答案对你来说可能有点晚,但未来的读者可能仍会受益。

这是HttpClient的a useful guide on exception handling(无论如何都是旧版本)。它可能会移动,所以这里有一个useful search来查找页面。