在使用Apache HttpClient发送请求时,有时候会受到API服务器的限制。限制的一种常见形式是“429 状态码 Too Many Requests”,表明您的客户端正在发送请求过于频繁。为了解决这个问题,您可以用以下代码示例控制请求次数:
HttpClient httpClient = new HttpClient();
int maxRetries = 5;
for (int i = 0; i <= maxRetries; i++) {
GetMethod getMethod = new GetMethod("https://example.com/api");
try {
int statusCode = httpClient.executeMethod(getMethod);
if (statusCode == HttpStatus.SC_OK) {
//处理响应
break;
} else if (statusCode == HttpStatus.SC_TOO_MANY_REQUESTS && i < maxRetries) {
//等待几秒钟重试,避免过多请求
Thread.sleep(2000);
} else {
//处理其他错误
break;
}
} catch (Exception e) {
//处理异常
break;
} finally {
getMethod.releaseConnection();
}
}
在上面的示例中,我们尝试发送 API 请求,如果遇到 “429 Too Many Requests” 响应,则等待2秒钟,然后再重试。我们还有一个最大重试次数,因此如果在所有尝试之后仍无法成功,我们将放弃请求并处理失败的情况。
这个方法只是一种解决方案,您可以根据需要进行修改,以适应您的具体情况。