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 |