bae升级到3,因此转战到sae。在此,记录一下遇到的问题。 html
sae java环境, java
1.jdk1.6,服务器jetty7.x web
2.本身上传的项目里面的jar包不能跟sae上的冲突。 spring
由于本身的项目是maven构建,用到了dom4j,maven的自动依赖下载功能将相应的xml-apis的jar包也自动下载了。 json
可可是,xml-apis这个jar包跟sae环境上的是冲突的,就会致使项目在本地正常运行,部属到服务器上就出现503等一些列的错误。 api
不得不说,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 自动被下载了 mvc
云服务器上没什么问题了,微信公共平台 url/token 验证又有问题了(后台用的是springmvc3.2.4) app
@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