2014-09-04 54 views
0

我是使用Spring的新手。我對代碼的工作嘗試使用restTemplate.getForObject沒有通過RestTemplate.getForObject傳遞標頭

客戶端傳遞標題:

String userServiceUrl = "http://localhost:8080/SampleRest/api/user/"; 
HttpHeaders headers = new HttpHeaders(); 
headers.set("Authorization", UUID.randomUUID().toString()); 
restTemplate.getForObject(userServiceUrl + "{id}",User.class,HttpMethod.GET,headers) ; 

但是對服務器的請求頭「認證」沒有全部通過。沒有標頭 「身份驗證」

requestHeaders.get("Authorization").get(0) //yields null exception 

我不能使用restTemplate.exchange

我究竟做錯了什麼?

幫助將不勝感激

+0

它應該不是requestHeaders.get(「Authentication」)。get(0)? – achingfingers 2014-09-04 14:28:38

+0

爲什麼?我用「授權」設置了一個標題,我希望在服務器端獲得相同的標題 – igx 2014-09-04 14:52:33

回答

1

沒有選項來傳遞報頭中的restTemplategetForObject方法。

如果您不想使用exchange,則可以實施ClientHttpRequestInterceptor來設置標頭。您也可以覆蓋SimpleClientHttpRequestFactory

0

我們可以在下面的方式使用它在春季啓動的GET方法:

@SpringBootApplication

公共類應用實現CommandLineRunner {

private static final Logger log = LoggerFactory.getLogger(Application.class); 

public static void main(String[] args) { 
    SpringApplication.run(Application.class, args); 
} 

@Override 
public void run(String... args) throws Exception { 
    try{ 
    RestTemplate restTemplate = new RestTemplate(); 
    HttpHeaders httpHeaders = new HttpHeaders(); 
    httpHeaders = this.createHeaders(); 
    ResponseEntity<String> response; 
    response = restTemplate.exchange("<url>",HttpMethod.GET,new HttpEntity<Object>(httpHeaders),String.class); 
    log.info(response.toString()); 
    } 
    catch(Exception e) 
    { 
     System.out.println("Exception"+e); 
    } 


} 

private HttpHeaders createHeaders(){ 
    HttpHeaders headers = new HttpHeaders(){ 
      {    
      set("Authorization", "3ee140"); 
      } 
     }; 

     return headers; 
} 

}