- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
使用spring rest模板时出现以下错误,但我为json响应定义了jackson。
同样,当我使用其余客户端查询URL时,也会得到很好的响应。
org.springframework.web.client.RestClientException: Could not extract response: no suitable HttpMessageConverter found for response type [tripadvisor.TripAdvisorResponse<java.util.List<model.external.tripadvisor.TripAdvisorLocation>>] and content type [text/javascript;charset=utf-8]
at org.springframework.web.client.HttpMessageConverterExtractor.extractData(HttpMessageConverterExtractor.java:109)
at org.springframework.web.client.RestTemplate$ResponseEntityResponseExtractor.extractData(RestTemplate.java:812)
at org.springframework.web.client.RestTemplate$ResponseEntityResponseExtractor.extractData(RestTemplate.java:796)
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:576)
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:544)
at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:495)
at sync.service.location.LocationServiceImpl.syncTripAdvisorLocations(LocationServiceImpl.java:69)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
at org.springframework.aop.interceptor.AsyncExecutionInterceptor$1.call(AsyncExecutionInterceptor.java:110)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
@Bean
public ClientHttpRequestFactory httpRequestFactory() {
return new HttpComponentsClientHttpRequestFactory(httpClient());
}
@Bean
public RestTemplate restTemplate() {
RestTemplate restTemplate = new RestTemplate(httpRequestFactory());
List<HttpMessageConverter<?>> converters = restTemplate.getMessageConverters();
for (HttpMessageConverter<?> converter : converters) {
if (converter instanceof MappingJackson2HttpMessageConverter) {
MappingJackson2HttpMessageConverter jsonConverter = (MappingJackson2HttpMessageConverter) converter;
jsonConverter.setObjectMapper(new ObjectMapper());
}
}
return restTemplate;
}
@Bean
public HttpClient httpClient() {
PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager();
CloseableHttpClient closeableHttpClient = HttpClientBuilder.create().setConnectionManager(connectionManager).build();
connectionManager.setMaxTotal(DEFAULT_MAX_TOTAL_CONNECTIONS);
connectionManager.setDefaultMaxPerRoute(DEFAULT_MAX_CONNECTIONS_PER_ROUTE);
connectionManager.setMaxPerRoute(new HttpRoute(new HttpHost("facebook.com")), 20);
connectionManager.setMaxPerRoute(new HttpRoute(new HttpHost("twitter.com")), 20);
connectionManager.setMaxPerRoute(new HttpRoute(new HttpHost("linkedin.com")), 20);
connectionManager.setMaxPerRoute(new HttpRoute(new HttpHost("viadeo.com")), 20);
connectionManager.setMaxPerRoute(new HttpRoute(new HttpHost("api.tripadvisor.com")), 20);
return closeableHttpClient;
}
最佳答案
MappingJackson2HttpMessageConverters的默认媒体类型是
/**
* Construct a new {@code BindingJacksonHttpMessageConverter}.
*/
public MappingJackson2HttpMessageConverter() {
super(new MediaType("application", "json", DEFAULT_CHARSET));
}
@Bean
public RestTemplate restTemplate() {
RestTemplate restTemplate = new RestTemplate(httpRequestFactory());
List<HttpMessageConverter<?>> converters = restTemplate.getMessageConverters();
for (HttpMessageConverter<?> converter : converters) {
if (converter instanceof MappingJackson2HttpMessageConverter) {
MappingJackson2HttpMessageConverter jsonConverter = (MappingJackson2HttpMessageConverter) converter;
jsonConverter.setObjectMapper(new ObjectMapper());
jsonConverter.setSupportedMediaTypes(ImmutableList.of(new MediaType("application", "json", MappingJackson2HttpMessageConverter.DEFAULT_CHARSET), new MediaType("text", "javascript", MappingJackson2HttpMessageConverter.DEFAULT_CHARSET)));
}
}
return restTemplate;
}
jsonConverter.setSupportedMediaTypes(ImmutableList.of(new MediaType("*", "json", MappingJackson2HttpMessageConverter.DEFAULT_CHARSET), new MediaType("*", "javascript", MappingJackson2HttpMessageConverter.DEFAULT_CHARSET)));
关于json - SpringTemplate没有找到合适的HttpMessageConverter作为响应类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28131139/
我正在编写一个客户端来使用 RESTful 服务。我需要以键值对的形式发送请求,他们建议我为此使用 Map。我调用的 RESTful 服务只接受 JSON,我的客户端将使用 Java。它实际上将成为现
我正在尝试获取 ResponseEntity with spring rest 模板,如下所示。我收到以下错误, Caused by: org.springframework.web.client.R
我想创建一个 RuntimeException 并设置 HTTP 状态和文本。有一个创建文本的 textService。 看了很多帖子,还是没明白。 我不能像这样在构造函数中使用 Autowiring
使用 Spring ,使用此代码: List> messageConverters = restTemplate.getMessageConverters(); for(HttpMessageConv
1、HttpMessageConverter 1、ResponseBody 2、RequestEntity 3、@ResponseBody 4、SpringMVC处理json 5、SpringMVC处
我正在运行一个 Spring Boot 应用程序,我已经注册了一个名为 CsvCompactVenueHttpMessageConverter 的新 HttpMessageConverter,这是它的
我有一个 Spring mvc @RestController 类,其中方法参数用 @RequestBody 注释。像这样: @RestController @RequestMapping("/fea
当在入站网关中使用消息转换器发生转换错误时,我遇到了奇怪的行为。下面示例中的想法是接收 XML 有效负载(或序列化 java),将它们转换为 java 对象并使用相同的媒体类型进行响应。 鉴于此配置:
我有一个基于 Spring MVC 的 Rest Web 服务。我用@RestControllerAdvice处理从我的 @Controller 抛出的异常s。 Controller 调用示例如下
读取数据时,Spring HttpMessageConverter 必须如何处理无效的 EOF?也就是说,在这种情况下,Spring MVC 的其余部分如何期望客户转换器发出错误请求信号? 实现读取数
编辑:错误发生在客户端而不是服务器。响应正文正在写入,但客户端未在 400 响应上读取它。 我有一个自定义消息转换器来生成 text/csv , application/csv来自ErrorRespo
我在客户端和服务器上都设置了使用 Jaxb2 的 MarshallingMessageConverter 关注 this问题。 这是在服务器端: @Configuration @EnableWebMv
我正在尝试在 Spring Boot 中解析以下 xml 响应: 响应结构: 来自服务的 API 调用: RestTemplate restTemplate = new RestTem
现在我正在使用 Spring MVC,我遇到并发出一些 Controller 方法没有返回数据并抛出 HttpMediaTypeNotAcceptableException 的问题。我的方法产生了te
我正在编写一个必须调用休息服务的 spring mvc 应用程序(Spring 新手)。我在我的 VM(Linux 中的 weblogic 10.3.6)中部署了其余服务,我正在编写的应用程序在我的本
首先,对于可能的重复,我们深表歉意。我发现了一些关于类似问题的问题。但是,我仍然无法弄清楚我的具体情况出了什么问题。 因此,来自服务器的示例 json: [ { "_id": "55f96
在实现 RESTful API 时,我将所有数据包装在一个对象中,因此它看起来像这样。 {error: null, code: 200, data: {...actual data...}} 这导致我
我正在使用 spring android rest 模板 并尝试将 JSON 响应转换为 java 类,如图所示 here . 这是我尝试完成这项工作的代码 fragment : RestTe
我正在尝试使用 Spring for Android rest client 通过 http post 发送数据,以避免创建和解析 json 数据。 来自他们的 manual他们有以下方法: rest
我正在将 JAXB 对象发布到 REST 服务。生成的类没有 XMLRootElement,因此我使用 Object Factory createXMl 方法创建它。当我手动添加 XMLRootEle
我是一名优秀的程序员,十分优秀!