文档(下面复制)并未详细说明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.
答案 0 :(得分:4)
您可以根据需要多次重复使用HttpClient
对象。我正在使用3.0版本,并且无法说明在最近的版本中这是否发生了变化。
关于例外情况,评论更多地指向HttpMethod
而不是客户。
它意味着什么,“某些传输异常可以从中恢复”,是您可以重新发送请求并获得有效响应。 IOExceptions
往往发生在您无法发送请求或未收到服务器响应时(例如服务器已关闭,或无法处理它正在接收的所有请求)。
这意味着“通常协议异常无法从中恢复”,即您发出HTTP请求的服务器不会发送符合HTTP协议的响应。通常,重新发送请求不会产生不同的结果。
我意识到这个答案对你来说可能有点晚,但未来的读者可能仍会受益。
这是HttpClient的a useful guide on exception handling(无论如何都是旧版本)。它可能会移动,所以这里有一个useful search来查找页面。