Java 如何提高HttpClient响应的处理速度?

Java 如何提高HttpClient响应的处理速度?,java,httpclient,Java,Httpclient,我正在创建一个程序,该程序将从以下位置使用外部API:。我使用搜索端点根据查询接收对象列表。使用Gson将结果转换为对象,然后在JavaFX中打印到TableView表中 问题是搜索结果中的位置越多,程序处理它所需的时间就越长。当搜索结果中只有两个位置时,时间是相当合理的,但如果有50个位置,我的计算机处理它可能需要10秒以上。在邮递员程序中获得相同的结果最多需要两秒钟,因此错误在我的代码一侧 只是为了检查一下,我跳过了Gson解析字符串结果的部分,我直接将结果打印为一个字符串,这仍然比它应该花

我正在创建一个程序,该程序将从以下位置使用外部API:。我使用搜索端点根据查询接收对象列表。使用Gson将结果转换为对象,然后在JavaFX中打印到TableView表中

问题是搜索结果中的位置越多,程序处理它所需的时间就越长。当搜索结果中只有两个位置时,时间是相当合理的,但如果有50个位置,我的计算机处理它可能需要10秒以上。在邮递员程序中获得相同的结果最多需要两秒钟,因此错误在我的代码一侧

只是为了检查一下,我跳过了Gson解析字符串结果的部分,我直接将结果打印为一个字符串,这仍然比它应该花费的时间长得多。因此,我假设错误出现在将响应转换为字符串的应用程序部分。我怎样才能修好它

这是我的密码:

 public String searchFood(String food) {

    //method might throw exception
    try {
        //creating URI
        URI searchUri = convertQueryIntoUri(food);

        //establishing connection
        HttpClient connection = HttpClient.newHttpClient();

        //defining request
        HttpRequest request = HttpRequest.newBuilder()
                .uri(searchUri)
                .GET()
                .build();

        //sending request and returning the result in the form of String

        return connection.sendAsync(request, HttpResponse.BodyHandlers.ofString())
                .thenApply(HttpResponse::body)
                .join();
        
    } catch (Exception e) {
        return "incorrect query or connection error";
    }
}
稍后我将打印响应,所需时间取决于搜索结果返回的对象数量。对于“西瓜”(2个结果),它需要2-3秒。对于“鸡”(超过40只),甚至需要20秒。我还尝试了同步发送(“send”方法),在性能上没有差别

编辑:找到解决方案!虽然没有人回答,但经过漫长的一天与谷歌的合作,我找到了一个解决方案:我们应该通过在请求头中指向gzip格式对请求进行加密。然后在接收到Gzip流之后,我们应该将其解压缩回字符串。显然,以字符串格式下载Json数据效率不高。“鸡”搜索现在大约需要3秒钟。速度快了5-6倍。我就是这样修改请求的:


                HttpRequest request = HttpRequest.newBuilder()
                    .header("Accept-Encoding", "gzip")
                    .uri(searchUri)
                    .GET()
                    .build();
下面是我找到的解压gzip的指令: