java - 我可以尝试哪些 HttpClient 风格可以执行 url 并获取字符串形式的响应?

标签 java performance httpclient resttemplate

我有一个非常简单的要求 - 我需要执行一个 URL 并将数据作为字符串返回,然后按原样返回该字符串。截至目前我正在使用 RestTemplate进行调用,因为我还需要将 header 值传递到我的服务 url。

下面是我迄今为止正在使用的 RestTemplate 的示例。我在多线程环境中使用 RestTemplate。我使用以下代码的项目对性能非常关键,因此我们不进行任何 JSON 字符串的反序列化,我们只是返回从服务器获取的字符串。

RestTemplate restTemplate = new RestTemplate();

HttpHeaders headerInfo = new HttpHeaders();
headerInfo.add("Client-Context", "some-value");
HttpEntity<Object> entity = new HttpEntity<Object>(headerInfo);

String response = restTemplate.exchange(url, HttpMethod.GET, entity, String.class);
// return this  response back to customer

除了使用 RestTemplate 之外,我还可以尝试哪些其他替代方案,与 RestTemplate 相比,它会更快、更高效?我认为性能可能与其他 HttpClient 相同,但我仍然想尝试一下,看看性能有何差异。

任何具有替代解决方案的示例也会对我有所帮助。

最佳答案

您可以使用Apache HTTP Client 。它提供了线程池和一些使事情变得更容易开箱即用的功能。它可能不会比您现在使用的性能更高,但您可以测试一下以确定。它看起来像这样(httpClient 是您决定和配置的 HttpClient 的实现):

HttpUriRequest request = new HttpGet("some-url");
request.addHeader("Client-Context", "some-value");
HttpResponse response = httpClient.execute(request);
return IOUtils.toString(response.getEntity().getContent(), "UTF-8");

您也可以只使用 Java URLs ,这是更简单的:

URL url = new URL("some-url");
URLConnection con = url.openConnection();
con.setRequestProperty("Client-Context", "some-value");
return IOUtils.toString(con.getInputStream(), "UTF-8");

当然,对于上述两个示例,您需要决定如何处理异常并将 InputStream 转换为 String (IOUtils.toString () 是一种选择)。

关于java - 我可以尝试哪些 HttpClient 风格可以执行 url 并获取字符串形式的响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24746983/

相关文章:

.net - 在 Neo4j 中插入节点非常慢

javascript - 优化击倒/TKO - Alpha3

java - 替换特定位置的子字符串

java - Java 扫描器上的 NotSerializableException?

c++ - 为什么增加阵列对齐会降低性能?

java - HttpClient 4.3.1 创建 HttpClient 实例的问题

java - Apache Http 客户端 SSL 证书错误

java - 如何使用 okHttpClient 执行 graphql 查询?

java - 如何从间接线程中捕获异常?

java - JSF - 如何在 <h :messages> in a visually appealing way? 中格式化我的全局消息