From 672436d9d04072b47d357354df85332d55b66a8c Mon Sep 17 00:00:00 2001 From: xuqm Date: Tue, 4 Apr 2023 17:17:54 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=A8=E6=88=B7=E6=B3=A8=E5=86=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 4 ++ .../cn/org/bjca/trust/pushdemo/OkHttpConfig.java | 73 ++++++++++++++++++++++ .../trust/pushdemo/controller/HelloController.java | 53 +++++++++------- .../bjca/trust/pushdemo/message/RabbitUser.java | 37 +++++++++++ 4 files changed, 144 insertions(+), 23 deletions(-) create mode 100644 src/main/java/cn/org/bjca/trust/pushdemo/OkHttpConfig.java create mode 100644 src/main/java/cn/org/bjca/trust/pushdemo/message/RabbitUser.java diff --git a/pom.xml b/pom.xml index efcd4c0..dd57fc6 100644 --- a/pom.xml +++ b/pom.xml @@ -41,6 +41,10 @@ org.springframework.boot spring-boot-starter-webflux + + com.squareup.okhttp3 + okhttp + diff --git a/src/main/java/cn/org/bjca/trust/pushdemo/OkHttpConfig.java b/src/main/java/cn/org/bjca/trust/pushdemo/OkHttpConfig.java new file mode 100644 index 0000000..1cf2980 --- /dev/null +++ b/src/main/java/cn/org/bjca/trust/pushdemo/OkHttpConfig.java @@ -0,0 +1,73 @@ +package cn.org.bjca.trust.pushdemo; + +import okhttp3.ConnectionPool; +import okhttp3.OkHttpClient; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import javax.net.ssl.SSLContext; +import javax.net.ssl.SSLSocketFactory; +import javax.net.ssl.TrustManager; +import javax.net.ssl.X509TrustManager; +import java.security.KeyManagementException; +import java.security.NoSuchAlgorithmException; +import java.security.SecureRandom; +import java.security.cert.CertificateException; +import java.security.cert.X509Certificate; +import java.util.concurrent.TimeUnit; + +@Configuration +public class OkHttpConfig { + @Bean + public OkHttpClient okHttpClient() { + return new OkHttpClient.Builder() + // .sslSocketFactory(sslSocketFactory(), x509TrustManager()) + .retryOnConnectionFailure(false) + .connectionPool(pool()) + .connectTimeout(30, TimeUnit.SECONDS) + .readTimeout(30, TimeUnit.SECONDS) + .writeTimeout(30, TimeUnit.SECONDS) + .build(); + } + + @Bean + public X509TrustManager x509TrustManager() { + return new X509TrustManager() { + + @Override + public void checkServerTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException { + } + + @Override + public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException { + + } + + @Override + public X509Certificate[] getAcceptedIssuers() { + return new X509Certificate[0]; + } + }; + } + + @Bean + public SSLSocketFactory sslSocketFactory() { + try { + //信任任何链接 + SSLContext sslContext = SSLContext.getInstance("TLS"); + sslContext.init(null, new TrustManager[]{x509TrustManager()}, new SecureRandom()); + return sslContext.getSocketFactory(); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + } catch (KeyManagementException e) { + e.printStackTrace(); + } + return null; + } + + @Bean + public ConnectionPool pool() { + return new ConnectionPool(200, 5, TimeUnit.MINUTES); + } +} + diff --git a/src/main/java/cn/org/bjca/trust/pushdemo/controller/HelloController.java b/src/main/java/cn/org/bjca/trust/pushdemo/controller/HelloController.java index b973e0b..7658f3c 100644 --- a/src/main/java/cn/org/bjca/trust/pushdemo/controller/HelloController.java +++ b/src/main/java/cn/org/bjca/trust/pushdemo/controller/HelloController.java @@ -1,15 +1,16 @@ package cn.org.bjca.trust.pushdemo.controller; import org.apache.tomcat.util.codec.binary.Base64; -import org.springframework.http.HttpHeaders; -import org.springframework.util.MultiValueMap; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import org.springframework.web.reactive.function.BodyInserters; -import org.springframework.web.reactive.function.client.WebClient; +import java.io.ByteArrayOutputStream; +import java.io.InputStream; +import java.io.OutputStream; +import java.net.HttpURLConnection; +import java.net.URL; import java.nio.charset.StandardCharsets; @RestController @@ -17,33 +18,39 @@ import java.nio.charset.StandardCharsets; public class HelloController { @GetMapping("/{id}") - public String getById(@PathVariable String id) { + public String getById(@PathVariable String id) throws Exception { System.out.println("id ==> " + id); - WebClient webClient = WebClient.builder().baseUrl("http://127.0.0.1:15672").defaultHeaders(httpHeaders -> httpHeaders.addAll(getHeaders())).build(); - - webClient.put().uri("/api/users/{userId}", id) // 请求路径 - .body(BodyInserters.fromValue("{\n" + " \"username\": \"" + id + "\",\n" + " \"password\": \"" + id + "\",\n" + " \"tags\": \"none\"\n" + "}")).retrieve(); - - webClient.put().uri("/api/permissions/{vhost}/{userId}", "/", id) // 请求路径 - .body(BodyInserters.fromValue("{\n" + " \"username\": \"" + id + "\",\n" + " \"vhost\": \"/\",\n" + " \"configure\": \".*\",\n" + " \"write\": \".*\",\n" + " \"read\": \".*\"\n" + "}")).retrieve(); - webClient.put().uri("/api/topic-permissions/{vhost}/{userId}", "/", id) // 请求路径 - .body(BodyInserters.fromValue("{\n" + " \"username\": \"" + id + "\",\n" + " \"vhost\": \"/\",\n" + " \"exchange\": \"\",\n" + " \"write\": \".*\",\n" + " \"read\": \".*\"\n" + "}")).retrieve(); - + requestByGetAndParams("http://127.0.0.1:15672/api/users/" + id, "{\"username\":\"" + id + "\",\"password\":\"" + id + "\",\"tags\":\"\"}"); + requestByGetAndParams("http://127.0.0.1:15672/api/permissions/%2F/" + id, "{\"username\":\"" + id + "\",\"vhost\":\"/\",\"configure\":\".*\",\"write\":\".*\",\"read\":\".*\"}"); + requestByGetAndParams("http://127.0.0.1:15672/api/topic-permissions/%2F/" + id, "{\"username\":\"" + id + "\",\"vhost\":\"/\",\"exchange\":\"\",\"write\":\".*\",\"read\":\".*\"}"); return "{\n" + " \"msg\": \"qdxorigin\",\n" + " \"status\": \"200\",\n" + " \"data\": \"Sbfuiaefhaikufhcsauik\"\n" + "}"; } String enc = new String(Base64.encodeBase64("admin:admin".getBytes(StandardCharsets.ISO_8859_1), false)); - HttpHeaders headers = null; - - private MultiValueMap getHeaders() { - if (headers == null) { - headers = new HttpHeaders(); - headers.add(HttpHeaders.AUTHORIZATION, "Basic " + enc); - headers.add(HttpHeaders.CONTENT_TYPE, "application/json"); + public void requestByGetAndParams(String requestUrl, String param) throws Exception { + URL url = new URL(requestUrl); + HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection(); + //设置请求方式,请求参数类型 + httpURLConnection.setRequestMethod("PUT"); + httpURLConnection.setRequestProperty("content-type", "application/json;charset=UTF-8"); + httpURLConnection.setRequestProperty("Authorization", "Basic YWRtaW46YWRtaW4="); + httpURLConnection.setDoOutput(true); + OutputStream outputStream = httpURLConnection.getOutputStream(); + //将参数写入输出流,param必须是JSON格式 + outputStream.write(param.getBytes()); + outputStream.flush(); + InputStream inputStream = httpURLConnection.getInputStream(); + ByteArrayOutputStream bout = new ByteArrayOutputStream(); + byte[] bytes = new byte[1024]; + int len = 0; + while ((len = inputStream.read(bytes)) >= 0) { + bout.write(bytes, 0, len); } - return headers; + inputStream.close(); + bout.close(); + bout.toByteArray(); } } diff --git a/src/main/java/cn/org/bjca/trust/pushdemo/message/RabbitUser.java b/src/main/java/cn/org/bjca/trust/pushdemo/message/RabbitUser.java new file mode 100644 index 0000000..fe1381b --- /dev/null +++ b/src/main/java/cn/org/bjca/trust/pushdemo/message/RabbitUser.java @@ -0,0 +1,37 @@ +package cn.org.bjca.trust.pushdemo.message; + +public class RabbitUser { + private String username; + private String password; + private String tags; + + public RabbitUser(String username, String password, String tags) { + this.username = username; + this.password = password; + this.tags = tags; + } + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public String getTags() { + return tags; + } + + public void setTags(String tags) { + this.tags = tags; + } +}