我正在使用Spring3.0 restTemboard通过调用post方法消费json webservice。
MultiValueMap<String, String> headers = new LinkedMultiValueMap<String, String>();
headers.add("Content-Type", MediaType.APPLICATION_JSON_VALUE);
HttpEntity<Object> entity = new HttpEntity<Object>(requestAsString, headers);
postForObject = restTemplate.postForObject(url, entity, responseClass );
我们的应用程序部署在WAS服务器中,并试图通过创建与TLS1的套接字连接来连接producer。0.但是,现在producer只支持TLS1。1和TLS1。2.
如何强制restTempate使用TLS1。1或TLS 1.2。
通常,对于apache httpClient代码,创建自定义PromatcolSocketFactory并覆盖createSocket方法。但是,在RestTemboard的情况下,如何实现相同的。
@如果你的问题还没解决的话。
RestTemplate restTemplate = new RestTemplate();
DefaultHttpClient httpClient = new DefaultHttpClient();
// We're going to try and load and enable TLS version 1.2 standard communication context from JSSE Providers
// This is enabled only for download media Mirakl as some merchants don't accept communication with TLS versions prior to 1.1
try {
SSLContext context;
context = SSLContext.getInstance("TLSv1.2");
context.init(null, null, null);
SSLSocketFactory ssf = new SSLSocketFactory(context);
ClientConnectionManager ccm = httpClient.getConnectionManager();
SchemeRegistry sr = ccm.getSchemeRegistry();
sr.register(new Scheme("http", 80, PlainSocketFactory.getSocketFactory()));
sr.register(new Scheme("https", 443, ssf));
} catch (NoSuchAlgorithmException | KeyManagementException e) {
LOGGER.warn("Could not load the TLS version 1.2 due to => ", e);
}
restTemplate.setRequestFactory(new HttpComponentsClientHttpRequestFactory(httpClient));
您可以将RestTemplate配置为使用自定义的ClientHttpRequestFactory
。特别是(因为您使用的是Spring 3.0),这里有一个CommonClientHttPrequestFactory。这将使您能够详细配置commons HTTP,您的RestTemplate将使用它来执行其请求。
请注意,在Spring的更高版本中,实际的实现类已经发生了变化(如果您仍然使用3.0,那么您真的应该考虑更新)。从3.1开始,实现类被称为HttpComponentsClientHttpRequestFactory
。
带着Spring
import javax.net.ssl.SSLContext;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
import org.springframework.web.client.RestTemplate;
SSLContext context = SSLContext.getInstance("TLSv1.2");
context.init(null, null, null);
CloseableHttpClient httpClient = HttpClientBuilder.create().setSSLContext(context)
.build();
HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory(httpClient);
RestTemplate restTemplate = new RestTemplate(factory);
.....
问题内容: 我通过调用post方法使用Spring3.0 restTemplate使用json webservice。 我们的应用程序已部署在WAS服务器中,并尝试通过使用TLS1.0创建套接字连接来连接生产者。但是,现在生产者仅支持TLS1.1和TLS1.2。 如何强制执行restTempate以使用TLS1.1或TLS 1.2。 通常,对于apache httpclient代码,创建自定义Pr
如何使用JAX-RS Client Fluent API为外部世界REST服务创建rest客户端? 例如,假设一个服务返回一个person对象,该对象有两个字段名和年龄。 无论我遇到什么样的例子/教程,他们做同样的事情,下面的片段或他们开发客户端在同一个项目,以取代tring.classperson.class.我应该如何创建独立的客户端,将返回我pojo的人。
问题内容: 我正在启动一个使用Java实现的Restful架构的项目(使用新的JAX-RS标准) 我们计划使用Flex应用程序开发GUI。我已经发现使用HTTPService组件实现此问题(响应错误代码,标头访问…)。 你们中的任何一个在类似项目中都有一些经验。可行吗 问题答案: 这里的问题是,围绕此问题的许多网络讨论都已经有一年或更久的历史了。我现在正在做同样的研究,这就是我今天所学到的。 Jo
嗨,我有一个restendpointxyz。com/test/create,其中预期的内容类型为application/json,内容为 在具有数组的body中还有一些其他字段。 我在Spring rest控制器中使用rest模板来访问上述endpoint,我还想传递数据。我不确定endpoint端使用什么域模型将json中的数据从客户端映射到服务器端。 如何使用rest模板使用上述数据命中上述e
Spring参考提到应该通过进行定制。如何用一个构建器管理来自多个IP地址的多个URI? 如何通过向所有全局添加,这是一个好的实践吗? 多谢帮忙。 我考虑为每个服务器设置一个。我不想手动执行此操作--我更喜欢使用Spring机制。 有人帮忙吗?
在es中搜索时,如何使用spring的rest模板或elasticsearch自己的高/低rest客户端,我左右为难。与spring rest模板相比,es客户端是否提供了HTTP连接池、性能等方面的任何优势。这两个模板中的哪一个在从服务器获取响应时花费的时间更少。请有人解释一下?