SpringでHTTP通信をする際に使える、RestTemplateの使い方を説明します。
リクエストを行う方法
リクエストパラメータもリクエストボディーもなしでGETする場合
RestTemplate restTemplate = new RestTemplate(); String url = "http://sample.co.jp/test"; ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.GET, null, String.class);
なお、POSTする場合はHttpMethod.GETをHttpMethod.POSTにすればOKです。
JsonをPOSTする場合
JSONをリクエストボディーに入れてPOSTする場合のコードです。
RestTemplate restTemplate = new RestTemplate();
String url = "http://sample.co.jp/test";
String requestJson = "{'key':'value'}";
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<String> entity = new HttpEntity<String>(requestJson, headers);
ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.POST, entity, String.class);
リクエストパラメータに値を入れてPOSTする場合
リクエストパラメータに値を入れる場合は、UriComponentsBuilderいうクラスを使ってURLを生成します。
RestTemplate restTemplate = new RestTemplate();
String url = "http://sample.co.jp/test";
UriComponentsBuilder builder = UriComponentsBuilder.fromUriString(url)
.queryParam("key1", "value1")
.queryParam("key2", "value2");
// System.out.println(builder.toUriString());
// 以下が出力されます
// http://sample.co.jp/test?key1=value1&key2=value2
ResponseEntity<String> response = restTemplate.exchange(builder.toUriString(), HttpMethod.POST, null, String.class);
なお、GETの場合はHttpMethod.POSTをGETにするだけでOKです。
レスポンスの扱い方
レスポンスからステータスコードやレスポンスボディーを取得する方法は以下の通りです。
int statusCode = response.getStatusCode(); String responseBody = response.getBody();