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();