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