Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我可以尝试哪些HttpClient风格,它们可以执行url并以字符串形式获得响应?_Java_Performance_Httpclient_Resttemplate - Fatal编程技术网

Java 我可以尝试哪些HttpClient风格,它们可以执行url并以字符串形式获得响应?

Java 我可以尝试哪些HttpClient风格,它们可以执行url并以字符串形式获得响应?,java,performance,httpclient,resttemplate,Java,Performance,Httpclient,Resttemplate,我有一个非常简单的要求-我需要执行一个URL,将数据作为字符串返回,然后按原样返回该字符串。到目前为止,我正在使用restemplate进行调用,因为我需要将标题值也传递给我的服务url 下面是我目前使用的RestTemplate示例。我正在多线程环境中使用RestTemplate。我正在使用下面代码的项目对性能非常关键,因此我们没有对JSON字符串进行任何反序列化,我们只是返回从服务器获得的字符串 RestTemplate restTemplate = new RestTemplate();

我有一个非常简单的要求-我需要执行一个URL,将数据作为字符串返回,然后按原样返回该字符串。到目前为止,我正在使用
restemplate
进行调用,因为我需要将标题值也传递给我的服务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=new RestTemplate();
HttpHeaderInfo=新的HttpHeaders();
添加(“客户上下文”、“某些值”);
HttpEntity=新的HttpEntity(headerInfo);
String response=restemplate.exchange(url,HttpMethod.GET,entity,String.class);
//将此响应返回给客户
与RestTemplate相比,使用RestTemplate更快、效率更高,我还可以尝试哪些替代方法来替代RestTemplate?我认为性能可能与其他HttpClient相同,但我仍然想在我这方面尝试一下,看看性能会有什么不同

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

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

您也可以直接使用,这更简单:

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()
是一个选项).

我希望有人告诉我这一点,所以我现在就与你分享我所知道的-有很多插件可以为你处理所有网络呼叫-这里很少有:截击(在2013年谷歌I/O大会上展示)、改装、事件总线等。我会投票取消这个问题,因为我认为这些信息需要更广泛地传播。
URL url = new URL("some-url");
URLConnection con = url.openConnection();
con.setRequestProperty("Client-Context", "some-value");
return IOUtils.toString(con.getInputStream(), "UTF-8");