2017-05-30 154 views
0

我試圖使用spring rest模板獲取ResponseEntity,如下所示。我得到下面的錯誤,找不到適用於響應類型和內容類型的HttpMessageConverter

Caused by: org.springframework.web.client.RestClientException: Could not extract response: no suitable HttpMessageConverter found for response type [interface org.springframework.security.oauth2.common.OAuth2AccessToken] and content type [application/json;charset=ISO-8859-1] 

代碼:

ResourceOwnerPasswordResourceDetails resource = new ResourceOwnerPasswordResourceDetails(); 

     resource.setAccessTokenUri("https://.../oauth2/token"); 
     resource.setUsername("u"); 
     resource.setPassword("p"); 
     resource.setClientSecret(".....s"); 
     resource.setClientId("....i"); 
     resource.setGrantType("password"); 
     List<String> scopes = new ArrayList<String>(2); 
     scopes.add("write"); 
     scopes.add("read"); 
     resource.setScope(scopes); 
     OAuth2RestTemplate oAuthRestTemplate = new OAuth2RestTemplate(resource); 

    try{ 
     SSLUtil.turnOffSslChecking(); 
     ResponseEntity<String> result = oAuthRestTemplate.getForEntity("https:......." + "/api/version", String.class); 
     System.out.println(result); 
      } catch (RestClientException e) {   
      e.printStackTrace(); 
     } 

我試着設置介質類型爲application/JSON作爲this post.But還是同樣的錯誤。

完全跟蹤:

Exception in thread "main" error="access_denied", error_description="Error requesting access token." 
    at org.springframework.security.oauth2.client.token.OAuth2AccessTokenSupport.retrieveToken(OAuth2AccessTokenSupport.java:121) 
    at org.springframework.security.oauth2.client.token.grant.password.ResourceOwnerPasswordAccessTokenProvider.obtainAccessToken(ResourceOwnerPasswordAccessTokenProvider.java:47) 
    at org.springframework.security.oauth2.client.token.AccessTokenProviderChain.obtainNewAccessTokenInternal(AccessTokenProviderChain.java:142) 
    at org.springframework.security.oauth2.client.token.AccessTokenProviderChain.obtainAccessToken(AccessTokenProviderChain.java:118) 
    at org.springframework.security.oauth2.client.OAuth2RestTemplate.acquireAccessToken(OAuth2RestTemplate.java:216) 
    at org.springframework.security.oauth2.client.OAuth2RestTemplate.getAccessToken(OAuth2RestTemplate.java:168) 
    at org.springframework.security.oauth2.client.OAuth2RestTemplate.createRequest(OAuth2RestTemplate.java:89) 
    at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:479) 
    at org.springframework.security.oauth2.client.OAuth2RestTemplate.doExecute(OAuth2RestTemplate.java:123) 
    at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:446) 
    at org.springframework.web.client.RestTemplate.getForEntity(RestTemplate.java:236) 
    at com.ClientTemplate.main(ClientTemplate.java:56) 
Caused by: org.springframework.web.client.RestClientException: Could not extract response: no suitable HttpMessageConverter found for response type [interface org.springframework.security.oauth2.common.OAuth2AccessToken] and content type [application/json;charset=ISO-8859-1] 
    at org.springframework.web.client.HttpMessageConverterExtractor.extractData(HttpMessageConverterExtractor.java:107) 
    at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:491) 
    at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:454) 
    at org.springframework.security.oauth2.client.token.OAuth2AccessTokenSupport.retrieveToken(OAuth2AccessTokenSupport.java:113) 
    ... 11 more 

回答

0

您需要添加MappingJackson2HttpMessageConverter並添加內容類型爲application/json的頭。見here

+0

我使用spring3。試過這個..'List >轉換器= oAuthRestTemplate.getMessageConverters(); (HttpMessageConverter 轉換器:轉換器)if(轉換器instanceof MappingJackson2HttpMessageConverter){...} ..'但是不能工作。春天3有沒有關於獲取resttemplate的鏈接? – NaaN

相關問題