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