我有一個應用程序使用Spring Source OAuth2作爲客戶端從資源服務器檢索用戶數據並創建本地用戶。我不斷收到錯誤當OAuth2ClientContextFilter嘗試檢索令牌:如何更改OAuth2RestTemplate中MappingJacksonHttpMessageConverter的MediaType
org.springframework.web.client.RestClientException: Could not extract response: no suitable HttpMessageConverter found for response type [org.springframework.security.oauth2.common.OAuth2AccessToken] and content type [application/x-javascript;charset=utf-8]
我理解默認的MediaType是「應用/ JSON」所以我試圖定義這樣的MappingJacksonHttpMessageConverter:
<bean id="jacksonConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<bean class="org.springframework.http.MediaType">
<constructor-arg value="application"/>
<constructor-arg value="x-javascript"/>
<constructor-arg value="UTF-8"/>
</bean>
</list>
</property>
</bean>
我也嘗試了應該支持*/*
內容類型但沒有運氣的'ALL'構造函數arg。請參閱http://static.springsource.org/spring/docs/3.1.x/javadoc-api/org/springframework/http/MediaType.html
其他重要信息是,我現在使用的是全部XML配置。我剛剛將我們的2.5應用程序升級到3.1.1。我在Spring安全PRE_AUTH篩選器中使用OAuth2RestTemplate,而不是在控制器中。所以我沒有使用註釋來映射其他調用。我試過添加<context:annotation-config/>
,但這沒有什麼區別。
我只是從我的自定義AbstractPreAuthenticatedProcessingFilter調用我的OAuth服務bean。當服務bean嘗試執行用戶數據的其餘調用時,會引發異常,從而觸發嘗試檢索令牌的OAuth2ClientContextFilter。這裏是我的OAuth2服務bean配置:
<bean id="reprintsOauthService" class="com.coral.user.ReprintsOauthService">
<property name="reprintsUserInfoUrl" value="https://www.demo.com/api/userinfo.ashx" />
<property name="reprintsRestTemplate">
<bean class="org.springframework.security.oauth2.client.OAuth2RestTemplate">
<constructor-arg ref="reprintsResource"/>
<property name="messageConverters">
<list>
<ref bean="jacksonConverter"/>
</list>
</property>
</bean>
</property>
</bean>
我錯過了什麼嗎?傑克遜爲什麼不映射回應?
'傑克遜 - databind'是足夠我的設置。感謝提示! – skirsch 2016-02-22 11:30:40
@skirsch感謝您的評論。 jackson-databind確實足夠。 – ozeray 2017-11-27 10:42:27