HTTP公共客户端4.12 tutorial section on exception handling清楚地表明,应该可以通过执行以下操作来设置请求重试处理程序...httpclient.setHttpRequestRetryHandler(myRetryHandler);
在日食中,我尝试过,它报告HttpClient没有这样的方法。这建议我将客户端强制转换为AbstractHttpClient
,然后致电。 setHttpRequestRetryHandler
像这样:((AbstractHttpClient) httpclient).setHttpRequestRetryHandler(myRetryHandler);
然后我的代码就可以了,但是文档和API之间的这种差异让我怀疑我是否在做我不应该做的事情。
文档是错误的还是我?
最佳答案
你是完全正确的。该文档使用了具体的DefaultHttpClient
(这是AbstractHttpClient
的子类,因此还有setHttpRequestRetryHandler()
方法。
当您做正确的事并编程到HttpClient
接口(可悲的是没有公开该方法)时,您必须进行该讨厌的转换。
看来Apache团队已决定保持HttpClient
接口超级干净,但要牺牲客户端代码:-(