Diretamente no código:
1, a configuração de definição de classe
importação org.springframework.context.annotation.Bean; importação org.springframework.context.annotation.Configuration; importação org.springframework.http.client.ClientHttpRequestFactory; importação org.springframework.http.client.SimpleClientHttpRequestFactory; importação org.springframework.web.client.RestTemplate; @Configuration classe pública 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); retornar fábrica; } }
2, a definição de serviço
importação org.springframework.http.HttpEntity; org.springframework.http.HttpHeaders importação; importação org.springframework.http.MediaType; importação org.springframework.http.ResponseEntity; importação org.springframework.stereotype.Service; importação org.springframework.util.MultiValueMap; importação org.springframework.web.client.RestTemplate; importação java.util.Map; @Service classe pública HttpUtils { private final RestTemplate restTemplate; HttpUtils públicas (RestTemplate restTemplate) { this.restTemplate = restTemplate; } // Get请求 Get public String (String url, Map <String, Object> params) { Cordas uri = buildUri (url, params); ResponseEntity <string> resposta = restTemplate.getForEntity (uri, String.class); regresso response.getBody (); } // Pós请求(JSON请求头) public String JPost (String url, Map <String, Object> params) { HttpEntity <Map <String, Object >> request = novas HttpEntity <> (params, jsonHeaderBuilder ()); ResponseEntity <String> response = restTemplate.postForEntity (url, pedido, String.class); regresso response.getBody (); } // Pós请求(URL请求头) public String UPost (String url, MultiValueMap <String, String> params) { HttpEntity <MultiValueMap <String, String >> pedido = new HttpEntity <> (params, urlHeaderBuilder ()); ResponseEntity <String> response = restTemplate.postForEntity (url, pedido, String.class); regresso response.getBody (); } //拼接Url和参数 privada Cordas buildUri (String url, Map <String, Object> params) { StringBuilder sb = new StringBuilder (url); sb.append ( "?"); for (Map.Entry <String, Object> entrada: params.entrySet ()) { ... sb.append (entry.getKey ()) append ( "=") append (entry.getValue ()) append ( "& "); } Sb.deleteCharAt (sb.length () - 1); regresso sb.ToString (); h.setContentType (MediaType.APPLICATION_FORM_URLENCODED); regressar h; } //构建Json请求头 privada HttpHeaders jsonHeaderBuilder () { HttpHeaders h = novas HttpHeaders (); h.setContentType (MediaType.APPLICATION_JSON); regressar h; } }
3, Exemplo (Referência)
solicitação POST, o parâmetro URL com o
MultiValueMap <String, String> requestPara = new LinkedMultiValueMap <> (); requestPara.add ( "id", id); requestPara.add ( "name", nome); StringBuilder sb = new StringBuilder (baseUrl); sb.append ( "/ oh / Sim"); Resposta String = httpUtils.UPost (sb.ToString (), requestPara);
JPost pedido GET e são comumente usados, os parâmetros são adicionados e UPost mesma forma, que tipo de mudança.
Map <String, Object> requestPara = new HashMap <> (); requestPara.put ( "id", id); requestPara.put ( "name", nome); StringBuilder sb = new StringBuilder (baseUrl); sb.append ( "/ oh / Sim");