From 4fa79bfeaca36b0d4baeed25a847d549714a65ac Mon Sep 17 00:00:00 2001 From: heavyrian2012 Date: Tue, 22 Apr 2025 12:21:45 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A2=91=E9=81=93=E5=92=8C=E6=9C=BA=E5=99=A8?= =?UTF-8?q?=E4=BA=BAAPI=E6=B7=BB=E5=8A=A0=E5=AF=B9=E7=AB=AF=E5=8F=A3?= =?UTF-8?q?=E7=9A=84=E6=A3=80=E6=9F=A5=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sdk/utilities/ChannelHttpUtils.java | 22 +++++++++++++++ .../sdk/utilities/RobotHttpUtils.java | 27 +++++++++++++++---- 2 files changed, 44 insertions(+), 5 deletions(-) diff --git a/sdk/src/main/java/cn/wildfirechat/sdk/utilities/ChannelHttpUtils.java b/sdk/src/main/java/cn/wildfirechat/sdk/utilities/ChannelHttpUtils.java index 04801278..3e2b5220 100644 --- a/sdk/src/main/java/cn/wildfirechat/sdk/utilities/ChannelHttpUtils.java +++ b/sdk/src/main/java/cn/wildfirechat/sdk/utilities/ChannelHttpUtils.java @@ -22,6 +22,8 @@ import org.slf4j.LoggerFactory; import java.io.BufferedReader; import java.io.InputStreamReader; import java.lang.reflect.Type; +import java.net.MalformedURLException; +import java.net.URL; import java.nio.charset.Charset; import java.util.concurrent.TimeUnit; @@ -35,10 +37,29 @@ public class ChannelHttpUtils extends JsonUtils { private String channelSecret; private final CloseableHttpClient httpClient; + private final int port; + + private void checkPort() { + if (port != 80 && port != 443) { + if (port == 18080) { + LOG.warn("您传入的频道API地址中的端口是18080,18080端口默认为管理API端口,频道API端口应该为IM服务的HTTP端口,默认为80,请确认是否使用错误!"); + } else { + LOG.warn("您传入的频道API地址中的端口不是80/443,频道API的端口和客户端使用端口一样,都应该为IM服务的HTTP端口,默认为80,请确实是否正确?如果您定制化了IM服务端口或者使用其他端口反向代理IM服务的HTTP端口请忽略此提示。"); + } + } + } + public ChannelHttpUtils(String imurl, String channelId, String secret) { this.imurl = imurl.trim(); this.channelId = channelId.trim(); this.channelSecret = secret.trim(); + try { + URL url = new URL(this.imurl); + this.port = url.getPort(); + } catch (MalformedURLException e) { + throw new RuntimeException(e); + } + checkPort(); PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager(); cm.setValidateAfterInactivity(1000); int connectTimeout = 5000; // 连接超时时间 @@ -118,6 +139,7 @@ public class ChannelHttpUtils extends JsonUtils { return fromJsonObject(content, clazz); } } catch (Exception e) { + checkPort(); e.printStackTrace(); throw e; }finally{ diff --git a/sdk/src/main/java/cn/wildfirechat/sdk/utilities/RobotHttpUtils.java b/sdk/src/main/java/cn/wildfirechat/sdk/utilities/RobotHttpUtils.java index cfecdb18..99039756 100644 --- a/sdk/src/main/java/cn/wildfirechat/sdk/utilities/RobotHttpUtils.java +++ b/sdk/src/main/java/cn/wildfirechat/sdk/utilities/RobotHttpUtils.java @@ -3,18 +3,15 @@ package cn.wildfirechat.sdk.utilities; import cn.wildfirechat.sdk.model.IMResult; import com.google.gson.Gson; import com.google.gson.GsonBuilder; -import ikidou.reflect.TypeBuilder; import io.netty.util.internal.StringUtil; import org.apache.commons.codec.digest.DigestUtils; import org.apache.http.HttpResponse; import org.apache.http.HttpStatus; -import org.apache.http.client.HttpClient; import org.apache.http.client.config.RequestConfig; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.DefaultHttpRequestRetryHandler; -import org.apache.http.impl.client.HttpClientBuilder; import org.apache.http.impl.client.HttpClients; import org.apache.http.impl.conn.PoolingHttpClientConnectionManager; import org.slf4j.Logger; @@ -22,7 +19,8 @@ import org.slf4j.LoggerFactory; import java.io.BufferedReader; import java.io.InputStreamReader; -import java.lang.reflect.Type; +import java.net.MalformedURLException; +import java.net.URL; import java.nio.charset.Charset; import java.util.concurrent.TimeUnit; @@ -36,10 +34,29 @@ public class RobotHttpUtils extends JsonUtils { private final String robotSecret; private final CloseableHttpClient httpClient; + private final int port; + + private void checkPort() { + if (port != 80 && port != 443) { + if (port == 18080) { + LOG.warn("您传入的机器人API地址中的端口是18080,18080端口默认为管理API端口,机器人API端口应该为IM服务的HTTP端口,默认为80,请确认是否使用错误!"); + } else { + LOG.warn("您传入的机器人API地址中的端口不是80/443,机器人API的端口和客户端使用端口一样,都应该为IM服务的HTTP端口,默认为80,请确实是否正确?如果您定制化了IM服务端口或者使用其他端口反向代理IM服务的HTTP端口请忽略此提示。"); + } + } + } + public RobotHttpUtils(String url, String robotId, String robotSecret) { this.url = url.trim(); this.robotId = robotId.trim(); this.robotSecret = robotSecret.trim(); + try { + URL u = new URL(this.url); + this.port = u.getPort(); + } catch (MalformedURLException e) { + throw new RuntimeException(e); + } + checkPort(); PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager(); cm.setValidateAfterInactivity(1000); int connectTimeout = 5000; // 连接超时时间 @@ -61,7 +78,6 @@ public class RobotHttpUtils extends JsonUtils { .build(); } - public IMResult httpJsonPost(String path, Object object, Class clazz) throws Exception{ if (isNullOrEmpty(url) || isNullOrEmpty(path)) { LOG.error("Not init IM SDK correctly. Do you forget init it?"); @@ -121,6 +137,7 @@ public class RobotHttpUtils extends JsonUtils { return fromJsonObject(content, clazz); } } catch (Exception e) { + checkPort(); e.printStackTrace(); throw e; }finally{