spring restTemplate呼叫http介面的使用
阿新 • • 發佈:2018-11-12
spring 封裝了模擬http請求傳送的呼叫:
工具類:
package com.tencent.sendmail.utils; import org.springframework.http.*; import org.springframework.util.MultiValueMap; import org.springframework.web.client.RestTemplate; public class HttpClient { /** * 向目的URL傳送post請求 * @param url 目的url * @param params 傳送的引數 * @return AdToutiaoJsonTokenData */ public static String sendPostRequest(String url, MultiValueMap<String, String> params){ RestTemplate client = new RestTemplate(); //新建Http頭,add方法可以新增引數 HttpHeaders headers = new HttpHeaders(); //設定請求傳送方式 HttpMethod method = HttpMethod.POST; // 以表單的方式提交 headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); //將請求頭部和引數合成一個請求 HttpEntity<MultiValueMap<String, String>> requestEntity = new HttpEntity<>(params, headers); //執行HTTP請求,將返回的結構使用String 類格式化(可設定為對應返回值格式的類) ResponseEntity<String> response = client.exchange(url, method, requestEntity,String .class); return response.getBody(); } /** * 向目的URL傳送get請求 * @param url 目的url * @param params 傳送的引數 * @param headers 傳送的http頭,可在外部設定好引數後傳入 * @return String */ public static String sendGetRequest(String url, MultiValueMap<String,String> params, HttpHeaders headers){ RestTemplate client = new RestTemplate(); HttpMethod method = HttpMethod.GET; // 以表單的方式提交 headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); //將請求頭部和引數合成一個請求 HttpEntity<MultiValueMap<String, String>> requestEntity = new HttpEntity<>(params, headers); //執行HTTP請求,將返回的結構使用String 類格式化 ResponseEntity<String> response = client.exchange(url, method, requestEntity, String.class); return response.getBody(); } }
測試:新建controller測試
@RequestMapping("/index") public String test(){ String url = "http://gc.ditu.aliyun.com/geocoding"; MultiValueMap<String,String> paramMap = new LinkedMultiValueMap<>(); List<String> list = new ArrayList<>(); list.add("蘭州市"); paramMap.put("a",list); HttpHeaders httpHeaders = new HttpHeaders(); httpHeaders.add("api-version", "1.0"); String json = HttpClient.sendGetRequest(url, paramMap, httpHeaders); System.out.println(json); }