solicita que o método de interface externo springboot

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

 

Acho que você gosta

Origin www.cnblogs.com/SamNicole1809/p/12610533.html
Recomendado
Clasificación