Directamente en el código:
1, la configuración de definición de clase
org.springframework.context.annotation.Bean importación; org.springframework.context.annotation.Configuration importación; org.springframework.http.client.ClientHttpRequestFactory importación; org.springframework.http.client.SimpleClientHttpRequestFactory importación; org.springframework.web.client.RestTemplate importación; @Configuration public class {HttpApiConfig @Bean pública RestTemplate restTemplate (fábrica ClientHttpRequestFactory) { return new RestTemplate (de fábrica); } @Bean pública ClientHttpRequestFactory simpleClientHttpRequestFactory () { fábrica SimpleClientHttpRequestFactory = new SimpleClientHttpRequestFactory (); factory.setReadTimeout (5000); factory.setConnectTimeout (5000); fábrica de retorno; } }
2, la definición de servicio
org.springframework.http.HttpEntity importación; org.springframework.http.HttpHeaders de importación; org.springframework.http.MediaType importación; org.springframework.http.ResponseEntity importación; org.springframework.stereotype.Service importación; org.springframework.util.MultiValueMap importación; org.springframework.web.client.RestTemplate importación; java.util.Map importación; @Service public class {HttpUtils final privado RestTemplate restTemplate; HttpUtils públicas (RestTemplate restTemplate) { this.restTemplate = restTemplate; } // obtener请求 cadena GET pública (String url, mapa <String, Object> params) { cadena URI = buildUri (url, params); ResponseEntity <cadena> de respuesta = restTemplate.getForEntity (URI, String.class); volver response.getBody (); } // Mensaje请求(JSON请求头) public String JPost (String url, Map <String, Object> params) { HttpEntity <Map <String, Object >> petición = nuevos HttpEntity <> (params, jsonHeaderBuilder ()); ResponseEntity <String> respuesta = restTemplate.postForEntity (url, petición, String.class); volver response.getBody (); } // Mensaje请求(URL请求头) public String UPost (String url, MultiValueMap <String, String> params) { HttpEntity <MultiValueMap <String, String >> petición = new HttpEntity <> (params, urlHeaderBuilder ()); ResponseEntity <String> respuesta = restTemplate.postForEntity (url, petición, String.class); volver response.getBody (); } //拼接Url和参数 privada Cadena buildUri (String url, Map <String, Object> params) { StringBuilder sb = new StringBuilder (url); sb.append ( "?"); para (Map.Entry <String, Object> entrada: params.entrySet ()) { ... sb.append (entry.getKey ()) append ( "=") append (entry.getValue ()) append ( "& "); } Sb.deleteCharAt (sb.length () - 1); volver sb.ToString (); h.setContentType (MediaType.APPLICATION_FORM_URLENCODED); retorno H; } // acumulación JSON encabezado de solicitud privada HttpHeaders jsonHeaderBuilder () { HttpHeaders nuevos nuevos HttpHeaders H = (); h.setContentType (MediaType.APPLICATION_JSON); retorno H ; } }
3, Ejemplo (Referencia)
solicitud POST, el parámetro de URL con el
MultiValueMap <String, String> requestPara = new LinkedMultiValueMap <> (); requestPara.add ( "id", id); requestPara.add ( "name", nombre); StringBuilder sb = new StringBuilder (baseUrl); sb.append ( "/ OH / sí"); Respuesta String = httpUtils.UPost (sb.ToString (), requestPara);
JAP solicitud GET y se utilizan comúnmente, se añaden parámetros y UPost Del mismo modo, el tipo de cambio.
Map <String, Object> requestPara = new HashMap <> (); requestPara.put ( "id", id); requestPara.put ( "name", nombre); StringBuilder sb = new StringBuilder (baseUrl); sb.append ( "/ OH / sí");