본문 바로가기
programing/Java

[Spring] RestTemplate.postForObject()

by RedWiz 2019. 1. 10.


maven

        <!-- Apache HttpClient 3.x -->
        <dependency>
            <groupId>commons-httpclient</groupId>
            <artifactId>commons-httpclient</artifactId>
            <version>3.1</version>
        </dependency>

        <!-- Apache HttpComponent 4.x -->
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>4.5.6</version>
        </dependency>

        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpasyncclient</artifactId>
            <version>4.1.4</version>
        </dependency>


java


        String URL = "http://localhost:8080";

        MultiValueMap<String, String> params = new LinkedMultiValueMap<>();

        // body 파라미터
        params.add("key", "value");
        // ContentType
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_JSON);

        HttpEntity<?> httpEntity = new HttpEntity<>(params, headers);

        HttpComponentsClientHttpRequestFactory factory
            = new HttpComponentsClientHttpRequestFactory();
        factory.setConnectTimeout(10000);
        factory.setReadTimeout(10000);

        RestTemplate restTemplate = new RestTemplate(factory);

        String response = new String();
        try {
            response = restTemplate.postForObject(
                    URL,
                    httpEntity,
                    String.class);
        } catch (Exception e) {
            System.out.println(" [Error]:" + e);
        }
        return response;


js에서 body로 json을 많이 사용해서 똑같이 body에 json을 사용해서 Spring에서도 시도 했는데

Restful Get은 그냥 하면 됐는데 Post는 잘 동작하지 않고 500에러를 뿜었다.

Postman에서 테스트는 잘 됐었는데...

알고 보니 헤더에 ContentType을 Json으로 설정해줘야 한다.

(HttpComponentsClientHttpRequestFactory에서 오류가 나면 메이븐 버전을 확인해 봐야 한다.)

HTTP의 세계는 멀고도 험난하군


'programing > Java' 카테고리의 다른 글

Java에서의 Lamda  (0) 2019.01.10
[Spring] JSON  (0) 2019.01.10
Collections  (0) 2018.02.09
Annotation (@)  (0) 2018.02.09
예외처리  (0) 2018.02.09