远程接口调用
获取nacos配置远程接口url
@Configuration
@Data
public class CrmConfig {
@Value("${crm.url}")
private String beforeUrl;
}
创建请求模板类,RestTemplate
@Bean
public RestTemplate restTemplate() {
RestTemplate restTemplate = new RestTemplate(httpRequestFactory());
List<HttpMessageConverter<?>> httpMessageConverters = restTemplate.getMessageConverters();
httpMessageConverters.stream().forEach(httpMessageConverter -> {
if (httpMessageConverter instanceof StringHttpMessageConverter) {
StringHttpMessageConverter messageConverter = (StringHttpMessageConverter) httpMessageConverter;
messageConverter.setDefaultCharset(Charset.forName("UTF-8"));
}
});
return restTemplate ;
}
@Bean
public ClientHttpRequestFactory httpRequestFactory() {
return new HttpComponentsClientHttpRequestFactory(httpClient());
}
@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(200);
connectionManager.setDefaultMaxPerRoute(100);
RequestConfig requestConfig = RequestConfig.custom()
.setSocketTimeout(10000)
.setConnectTimeout(5000)
.setConnectionRequestTimeout(5000)
.build();
return HttpClientBuilder.create()
.setDefaultRequestConfig(requestConfig)
.setConnectionManager(connectionManager)
.build();
}
工具类
@Autowired
private RestTemplate restTemplate;
@Autowired
private CrmConfig crmConfig;
public JSONObject httpPost(Object object,String crmToken,String afterUrl){
JSONObject params = new JSONObject();
params.put("data",object);
HttpHeaders headers = new HttpHeaders();
headers.add("contentType", "application/json");
headers.add("Authorization", crmToken);
HttpEntity<JSONObject> requestEntity = new HttpEntity<JSONObject>(params,headers);
ResponseEntity<String> entity = restTemplate.exchange(crmConfig.getBeforeUrl()+afterUrl , HttpMethod.POST, requestEntity, String.class);
JSONObject data = JSON.parseObject(entity.getBody());
return data;
}
public JSONObject httpGet(String params,String crmToken,String afterUrl){
HttpHeaders headers = new HttpHeaders();
headers.add("contentType", "application/json");
headers.add("Authorization", crmToken);
HttpEntity<JSONObject> requestEntity = new HttpEntity<JSONObject>(headers);
ResponseEntity<String> entity = restTemplate.exchange(crmConfig.getBeforeUrl()+afterUrl+"?"+params , HttpMethod.GET, requestEntity, String.class);
JSONObject data = JSON.parseObject(entity.getBody());
return data;
}