1.需求
项目需要使用微信公众号进行相关接口调用时,第一步需要设置业务域名及安全域名,官方要求将MP_verify_xxx.txt文件放置于域名根目录,且可以访问;
2.常规项目
直接将下载的.txt文件放置于tomcat下webapps目录下即可,针对部分开发中的项目,尤其Springboot等项目,使用嵌入式Tomcat或者Jetty等服务器的情况,则非常不便;
3.网上误区
网上很多说是需要将String返回值改为Object或者ObjectJSON,同时在pom.xml中添加如下jackson依赖:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.12.0</version>
</dependency>
4.常见错误
org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representation
at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:287)
at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.handleReturnValue(RequestResponseBodyMethodProcessor.java:182)
at org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite.handleReturnValue(HandlerMethodReturnValueHandlerComposite.java:82)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:119)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:870)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:776)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:991)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:925)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:978)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:870)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:635)
Could not find acceptable representation:不存在有效的转换器(梁新个人翻译)
问题应该出在Http Media Type不能被正确解析
5.解决办法
以下方案针对Springboot项目,找到实现WebMvcConfigurer的类,如果没有可以新创建。
重写其中的configureMessageConverters方法,其中添加对String类型的转换,重新系统即可!
List<MediaType> supportedMediaTypes = Lists.newArrayList();
supportedMediaTypes.add(MediaType.APPLICATION_JSON_UTF8);
StringHttpMessageConverter stringHttpMessageConverter =new StringHttpMessageConverter();
stringHttpMessageConverter.setSupportedMediaTypes(supportedMediaTypes);
converters.add(stringHttpMessageConverter);