- A+
所属分类:SpringBoot
最近在弄企业微信回调发现一个问题,就是springMVC接口返回的字符串带上了双引号。企业微信具体问题参照企业微信回调测试验证通过,但实际配置时验证不通过
造成这个问题的原因是,工程里加了ControllerAdvice统一处理返回结果,把结果都当成json来处理了,而json中默认会给字符串带上双引号。
解决方法就是加上StringHttpMessageConverter转换器,如果返回结果是String型,则走StringHttpMessageConverter这个转换器,其它类型,就走FastJsonHttpMessageConverter转换器。
注意:加入StringHttpMessageConverter时,必须放在FastJsonHttpMessageConverter前面。
配置如下:
@Configuration
@EnableWebMvc
public class WebConfiguration extends WebMvcConfigurerAdapter
{
@Bean
public FastJsonHttpMessageConverter fastJsonHttpMessageConverters() {
//需要定义一个convert转换消息的对象;
FastJsonHttpMessageConverter fastJsonHttpMessageConverter = new FastJsonHttpMessageConverter();
//处理中文乱码问题
List<MediaType> fastMediaTypes = new ArrayList<>();
fastMediaTypes.add(MediaType.APPLICATION_JSON_UTF8);
fastMediaTypes.add(MediaType.TEXT_HTML);
//在convert中添加配置信息.
fastJsonHttpMessageConverter.setSupportedMediaTypes(fastMediaTypes);
FastJsonConfig fastJsonConfig = new FastJsonConfig();
fastJsonConfig.setSerializerFeatures(
SerializerFeature.PrettyFormat,
SerializerFeature.WriteMapNullValue);
fastJsonHttpMessageConverter.setFastJsonConfig(fastJsonConfig);
return fastJsonHttpMessageConverter;
}
@Bean
public StringHttpMessageConverter stringHttpMessageConverter(){
return new StringHttpMessageConverter(Charset.forName("UTF-8"));
}
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters)
{
converters.add(stringHttpMessageConverter());
converters.add(fastJsonHttpMessageConverters());
}
@Override
public void extendMessageConverters(List<HttpMessageConverter<?>> converters)
{
converters.clear();
converters.add(stringHttpMessageConverter());
converters.add(fastJsonHttpMessageConverters());
}
