New file |
| | |
| | | package com.dy.rtuMw3rd.http4Xjnk; |
| | | |
| | | import com.dy.common.util.HttpCallback; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.http.*; |
| | | import org.springframework.http.converter.StringHttpMessageConverter; |
| | | import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; |
| | | import org.springframework.stereotype.Component; |
| | | import org.springframework.web.client.RestTemplate; |
| | | import org.springframework.web.util.UriComponentsBuilder; |
| | | |
| | | import java.nio.charset.StandardCharsets; |
| | | import java.util.Iterator; |
| | | import java.util.Map; |
| | | import java.util.concurrent.CompletableFuture; |
| | | |
| | | /** |
| | | * @Author: liurunyu |
| | | * @Date: 2025/3/15 9:56 |
| | | * @Description |
| | | */ |
| | | @Component() |
| | | public class HttpRq { |
| | | |
| | | private RestTemplate restTemplate ; |
| | | |
| | | @Autowired |
| | | public void setRestTemplate(RestTemplate restTemplate){ |
| | | this.restTemplate = restTemplate; |
| | | } |
| | | |
| | | /** |
| | | * get请求,返回json内容 |
| | | * 同步 |
| | | * @param httpBaseUrl |
| | | * @param params |
| | | * @param cb |
| | | * @throws Exception |
| | | */ |
| | | public void get4JsonBySync(String httpBaseUrl, Map<String, String> params, HttpCallback cb) throws Exception { |
| | | String url = UriComponentsBuilder.fromUriString(httpBaseUrl) |
| | | .build() |
| | | .toUriString(); |
| | | |
| | | UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(url) ; |
| | | if(params != null && params.size() > 0){ |
| | | Iterator<String> it = params.keySet().iterator() ; |
| | | String key ; |
| | | while (it.hasNext()){ |
| | | key = it.next() ; |
| | | builder.queryParam(key, params.get(key)) ; |
| | | } |
| | | } |
| | | httpGetRequestSync(builder, cb); |
| | | } |
| | | /** |
| | | * get请求,返回json内容 |
| | | * 异步 |
| | | * @param httpBaseUrl |
| | | * @param params |
| | | * @param cb |
| | | * @throws Exception |
| | | */ |
| | | public void get4JsonByAsync(String httpBaseUrl, Map<String, String> params, HttpCallback cb) throws Exception { |
| | | String url = UriComponentsBuilder.fromUriString(httpBaseUrl) |
| | | .build() |
| | | .toUriString(); |
| | | |
| | | UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(url) ; |
| | | if(params != null && params.size() > 0){ |
| | | Iterator<String> it = params.keySet().iterator() ; |
| | | String key ; |
| | | while (it.hasNext()){ |
| | | key = it.next() ; |
| | | builder.queryParam(key, params.get(key)) ; |
| | | } |
| | | } |
| | | httpGetRequestAsync(builder, cb); |
| | | } |
| | | |
| | | /** |
| | | * get请求,返回json内容 |
| | | * 同步 |
| | | * @param httpBaseUrl |
| | | * @param params |
| | | * @param cb |
| | | * @throws Exception |
| | | */ |
| | | public void post4JsonBySync(String httpBaseUrl, Map<String, String> params, HttpCallback cb) throws Exception { |
| | | String url = UriComponentsBuilder.fromUriString(httpBaseUrl) |
| | | .build() |
| | | .toUriString(); |
| | | |
| | | UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(url) ; |
| | | httpPostRequestSync(builder, params, cb); |
| | | } |
| | | /** |
| | | * get请求,返回json内容 |
| | | * 异步 |
| | | * @param httpBaseUrl |
| | | * @param params |
| | | * @param cb |
| | | * @throws Exception |
| | | */ |
| | | public void post4JsonByAsync(String httpBaseUrl, Map<String, String> params, HttpCallback cb) throws Exception { |
| | | String url = UriComponentsBuilder.fromUriString(httpBaseUrl) |
| | | .build() |
| | | .toUriString(); |
| | | |
| | | UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(url) ; |
| | | httpPostRequestAsync(builder, params, cb); |
| | | } |
| | | |
| | | /** |
| | | * 发起请求 |
| | | * @param builder |
| | | * @param cb |
| | | * @return |
| | | */ |
| | | private void httpGetRequestSync(UriComponentsBuilder builder, HttpCallback cb) { |
| | | HttpHeaders headers = new HttpHeaders() ; |
| | | headers.setContentType(MediaType.APPLICATION_JSON) ; |
| | | restTemplate.getMessageConverters().set(1,new StringHttpMessageConverter(StandardCharsets.UTF_8)); |
| | | // 通过Get方式调用接口 |
| | | ResponseEntity<String> response = restTemplate.exchange(builder.toUriString(), |
| | | HttpMethod.GET, |
| | | new HttpEntity<>(headers), |
| | | String.class); |
| | | |
| | | String contentType = response.getHeaders().getContentType().toString() ; |
| | | cb.call(response.getStatusCode().value() + "", contentType, response.getBody()); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 发起请求 |
| | | * @param builder |
| | | * @param cb |
| | | * @return |
| | | */ |
| | | private void httpGetRequestAsync(UriComponentsBuilder builder, HttpCallback cb) throws Exception { |
| | | HttpHeaders headers = new HttpHeaders() ; |
| | | headers.setContentType(MediaType.APPLICATION_JSON) ; |
| | | restTemplate.getMessageConverters().set(1,new StringHttpMessageConverter(StandardCharsets.UTF_8)); |
| | | // 发起异步 GET 请求 |
| | | CompletableFuture<ResponseEntity<String>> future = CompletableFuture.supplyAsync(() -> |
| | | // 通过Get方式调用接口 |
| | | restTemplate.exchange(builder.toUriString(), |
| | | HttpMethod.GET, |
| | | new HttpEntity<>(headers), |
| | | String.class) |
| | | ); |
| | | future.thenAccept(response -> { |
| | | String contentType = response.getHeaders().getContentType().toString() ; |
| | | cb.call(response.getStatusCode().value() + "", contentType, response.getBody()); |
| | | }) ; |
| | | /* |
| | | AtomicReference<Throwable> exeEx = new AtomicReference() ; |
| | | future.thenAccept(response -> { |
| | | String contentType = response.getHeaders().getContentType().toString() ; |
| | | cb.call(response.getStatusCode().value() + "", contentType, response.getBody()); |
| | | }).exceptionally(ex -> { |
| | | exeEx.set(ex.getCause()); |
| | | return null; |
| | | }); |
| | | */ |
| | | } |
| | | |
| | | /** |
| | | * 发起请求 |
| | | * @param builder |
| | | * @param body |
| | | * @param cb |
| | | * @return |
| | | */ |
| | | private void httpPostRequestSync(UriComponentsBuilder builder, Map<String, String> body, HttpCallback cb) { |
| | | HttpHeaders headers = new HttpHeaders() ; |
| | | headers.setContentType(MediaType.APPLICATION_JSON) ; |
| | | restTemplate.getMessageConverters().set(1,new StringHttpMessageConverter(StandardCharsets.UTF_8)); |
| | | restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter()); |
| | | HttpEntity<Map<String, String>> requestEntity = new HttpEntity<>(body, headers); |
| | | // 通过Get方式调用接口 |
| | | ResponseEntity<String> response = restTemplate.exchange(builder.toUriString(), |
| | | HttpMethod.POST, |
| | | requestEntity, |
| | | String.class); |
| | | |
| | | String contentType = response.getHeaders().getContentType().toString() ; |
| | | cb.call(response.getStatusCode().value() + "", contentType, response.getBody()); |
| | | } |
| | | |
| | | /** |
| | | * 发起请求 |
| | | * @param builder |
| | | * @param body |
| | | * @param cb |
| | | * @return |
| | | */ |
| | | private void httpPostRequestAsync(UriComponentsBuilder builder, Map<String, String> body, HttpCallback cb) throws Exception { |
| | | HttpHeaders headers = new HttpHeaders() ; |
| | | headers.setContentType(MediaType.APPLICATION_JSON) ; |
| | | restTemplate.getMessageConverters().set(1,new StringHttpMessageConverter(StandardCharsets.UTF_8)); |
| | | restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter()); |
| | | HttpEntity<Map<String, String>> requestEntity = new HttpEntity<>(body, headers); |
| | | // 发起异步 GET 请求 |
| | | CompletableFuture<ResponseEntity<String>> future = CompletableFuture.supplyAsync(() -> |
| | | // 通过Get方式调用接口 |
| | | restTemplate.exchange(builder.toUriString(), |
| | | HttpMethod.POST, |
| | | requestEntity, |
| | | String.class) |
| | | ); |
| | | future.thenAccept(response -> { |
| | | String contentType = response.getHeaders().getContentType().toString() ; |
| | | cb.call(response.getStatusCode().value() + "", contentType, response.getBody()); |
| | | }) ; |
| | | /* |
| | | AtomicReference<Throwable> exeEx = new AtomicReference() ; |
| | | future.thenAccept(response -> { |
| | | String contentType = response.getHeaders().getContentType().toString() ; |
| | | cb.call(response.getStatusCode().value() + "", contentType, response.getBody()); |
| | | }).exceptionally(ex -> { |
| | | exeEx.set(ex.getCause()); |
| | | return null; |
| | | }); |
| | | */ |
| | | } |
| | | } |