복붙노트

[SPRING] RestTemplate에서 응답 헤더를 읽으려면 어떻게해야합니까?

SPRING

RestTemplate에서 응답 헤더를 읽으려면 어떻게해야합니까?

RestTemplate.postForObject를 사용하여 웹 서비스에 정보를 게시하고 있습니다. 결과 문자열 외에 응답 헤더의 정보가 필요합니다. 이걸 얻을 수있는 방법이 있습니까?

RestTemplate template = new RestTemplate();
String result = template.postForObject(url, request, String.class);

해결법

  1. ==============================

    1.Ok, 나는 마침내 그것을 이해했다. 교환 방법은 내가 필요한 것입니다. 전체 헤더를 포함하는 HttpEntity를 반환합니다.

    Ok, 나는 마침내 그것을 이해했다. 교환 방법은 내가 필요한 것입니다. 전체 헤더를 포함하는 HttpEntity를 반환합니다.

    RestTemplate template = new RestTemplate();
    HttpEntity<String> response = template.exchange(url, HttpMethod.POST, request, String.class);
    
    String resultString = response.getBody();
    HttpHeaders headers = response.getHeaders();
    
  2. ==============================

    2.가장 좋은 방법은 execute 메소드를 사용하고 헤더에 액세스 할 수있는 ResponseExtractor를 전달하는 것입니다.

    가장 좋은 방법은 execute 메소드를 사용하고 헤더에 액세스 할 수있는 ResponseExtractor를 전달하는 것입니다.

    private static class StringFromHeadersExtractor implements ResponseExtractor<String> {
    
        public String extractData(ClientHttpResponse response) throws   
        {
            return doSomthingWithHeader(response.getHeaders());
        }
    }
    

    RestTemplate을 확장하고 doExecute에 대한 호출을 재정의하고 거기에 특수 헤더 처리 논리를 추가하는 것이 좋습니다 (덜 깨끗함).

  3. ==============================

    3.이것이 권장되는 방법인지는 모르지만 사용자 지정 HttpMessageConverter를 사용하도록 템플릿을 구성하면 응답 헤더에서 정보를 추출 할 수있는 것처럼 보입니다.

    이것이 권장되는 방법인지는 모르지만 사용자 지정 HttpMessageConverter를 사용하도록 템플릿을 구성하면 응답 헤더에서 정보를 추출 할 수있는 것처럼 보입니다.

  4. ==============================

    4.

      HttpEntity<?> entity = new HttpEntity<>( postObject, headers ); // for request
        HttpEntity<String> response = template.exchange(url, HttpMethod.POST, entity, String.class);
        String result= response.getBody();
        HttpHeaders headers = response.getHeaders();
    
  5. from https://stackoverflow.com/questions/6005709/how-do-i-read-the-response-header-from-resttemplate by cc-by-sa and MIT license