微信公共平台开发者url/token 认证(springmvc3.2.4)

bae升级到3,所以转战到sae。在此,记录一下遇到的问题。

sae java环境,

1.jdk1.6,服务器jetty7.x

2.自己上传的项目里面的jar包不能跟sae上的冲突。

   因为自己的项目是maven构建,用到了dom4j,maven的自动依赖下载功能将相应的xml-apis的jar包也自动下载了。

   可但是,xml-apis这个jar包跟sae环境上的是冲突的,就会导致项目在本地正常运行,部属到服务器上就出现503等一些列的错误。

   不得不说,maven有的时候还真会帮了倒忙。

   幸好会谷歌,得到的解决方法就是

<!-- dom4j -->
<dependency>
 <groupId>dom4j</groupId>
 <artifactId>dom4j</artifactId>
 <version>1.6.1</version>
 <exclusions>
   <exclusion>
   	<artifactId>xml-apis</artifactId>
    	<groupId>xml-apis</groupId>
    </exclusion>
 </exclusions>
</dependency>

这样就可以避免xml-apis 自动被下载了

云服务器上没什么问题了,微信公共平台 url/token 验证又有问题了(后台用的是springmvc3.2.4)

@RequestMapping(value="/urltoken",method=RequestMethod.GET,produces="application/json;charset=UTF-8")
	@ResponseBody
	public Object initWeixinURL(HttpServletRequest request){
		String echostr = request.getParameter("echostr");
		if (com.nolosing.wechat.util.WeixinURL.checkWeixinReques(request) && echostr != null) { //验证方法省略。。
			return echostr;
		}else{
			return "error";
		}
	}
这种格式返回内容为json格式,所以微信验证老是不通过。

幸好又会google,原来微信要求返回字符串的格式是text/html...

所以改了

produces="text/html;charset=UTF-8"

可是这样在springmvc接收请求后返回页面出现406错误了!!!

再一次google,

最后在springmvc-servlet.xml 配置中添加了

<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
        <property name="messageConverters">
             <util:list id="beanList">
                 <ref bean="mappingJacksonHttpMessageConverter"/>
                 <ref bean="stringHttpMessageConverter" />
             </util:list>
         </property>
    </bean>
     <bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
         <property name="supportedMediaTypes">
           <list>
                 <value>application/json;charset=UTF-8</value>
            </list>
        </property>
     </bean>
     <bean id="stringHttpMessageConverter" class="org.springframework.http.converter.StringHttpMessageConverter">
     	<property name = "supportedMediaTypes">
              <list>
                  <value>text/html;charset=UTF-8</value>   
             </list>   
        </property>   
     </bean>
然后问题就解决了,微信的url/token 验证也通过了。。


至于原理,请自行google 上面对应的stringHttpMessageConverter 和 mappingJacksonHttpMessageConverter 


你可能感兴趣的:(maven,springMVC,微信公共平台开发者)