微信公共平臺開發者url/token 認證(springmvc3.2.4)

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 

相關文章
相關標籤/搜索