美文网首页
RestTemplate使用HttpClient

RestTemplate使用HttpClient

作者: wangpeng123 | 来源:发表于2018-05-31 16:27 被阅读0次
    package net.iyouqu.union.config;
    
    import org.apache.http.client.HttpClient;
    import org.apache.http.client.config.RequestConfig;
    import org.apache.http.config.Registry;
    import org.apache.http.config.RegistryBuilder;
    import org.apache.http.conn.socket.ConnectionSocketFactory;
    import org.apache.http.conn.socket.PlainConnectionSocketFactory;
    import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
    import org.apache.http.impl.client.HttpClientBuilder;
    import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.http.client.ClientHttpRequestFactory;
    import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
    import org.springframework.web.client.RestTemplate;
    
    /**
     * description:
     *
     * @author wangpeng
     * @date 2018/05/23
     */
    @Configuration
    public class RestTemplateConfig {
        @Bean
        public ClientHttpRequestFactory httpRequestFactory() {
            return new HttpComponentsClientHttpRequestFactory(httpClient());
        }
    
        @Bean
        public RestTemplate restTemplate() {
            return new RestTemplate(httpRequestFactory());
        }
    
        @Bean
        public HttpClient httpClient() {
            Registry<ConnectionSocketFactory> registry = RegistryBuilder.<ConnectionSocketFactory>create()
                    .register("http", PlainConnectionSocketFactory.getSocketFactory())
                    .register("https", SSLConnectionSocketFactory.getSocketFactory())
                    .build();
            PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager(registry);
            connectionManager.setMaxTotal(3000);
            connectionManager.setDefaultMaxPerRoute(1000);
    
            RequestConfig requestConfig = RequestConfig.custom()
                    .setSocketTimeout(3000)
                    .setConnectTimeout(3000)
                    .setConnectionRequestTimeout(3000)
                    .build();
    
            return HttpClientBuilder.create()
                    .setDefaultRequestConfig(requestConfig)
                    .setConnectionManager(connectionManager)
                    .build();
        }
    
    }
    

    发送form-data方式的Post请求

    MultiValueMap<String, Object> parts = new LinkedMultiValueMap<String, Object>() {{
                add("aaa","aaa");
                add("bbb", "bbb");
            }};
    
            HttpHeaders headers = new HttpHeaders();
            headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
    
            HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<>(parts, headers);
    
            ResponseEntity<String> response =
                    restTemplate.exchange(YW_CHECK_CHAPTER_TAKE_URL,
                            HttpMethod.POST, requestEntity, String.class);
            System.out.println(response.getBody());
    

    相关文章

      网友评论

          本文标题:RestTemplate使用HttpClient

          本文链接:https://www.haomeiwen.com/subject/kbnqsftx.html