如何在Java中创建并行HTTP GET请求



首先,我应该注意到我对Java非常陌生,所以研究这个主题有相当长的学习曲线,我几乎不理解我正在阅读的内容。我的预期目标是发送多个HTTP GET请求(~60),然后在合理的时间范围内将所有数据合并到JSONObject中。

我已经设法部分地完成了任务(尽管我的方法可能是非正统的),然而,它是同步的,这让我在收到响应之前等待了很长一段时间,这不是我想要实现的。

如果有人能提供一些关于我如何处理这个问题的见解,那将是很大的帮助,以及我可以在哪里了解更多关于正在使用的部件。

private static int pages;
private static final String BASE = "https://someapi.com/api?page=";
public static String getData() throws IOException {
JSONObject finalData = new JSONObject();
System.out.println("Attempting to get API data!");
HttpClient client = HttpClientBuilder.create().build();
HttpGet request = new HttpGet(
BASE + "0");
HttpResponse response = client.execute(request);
String result = IOUtils.toString(new BufferedReader
(new InputStreamReader(
response.getEntity().getContent())));

JSONObject jsonData = new JSONObject(result);
pages = jsonData.getInt("totalPages");
totalData.put("0", jsonData.getJSONArray("data"));
for (int x = 1; x < pages; x++) {
totalData.put(Integer.toString(x), getPageData(x)); // getPageData is essentially a copy-paste of the HTTP client except it has a different number being added to the paste.
}
return totalData.toString();
}

您可以创建多个线程,每个线程将负责一个请求

最新更新