频道和机器人API添加对端口的检查提示

This commit is contained in:
heavyrian2012
2025-04-22 12:21:45 +08:00
parent 98388a5129
commit 4fa79bfeac
2 changed files with 44 additions and 5 deletions
@@ -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{
@@ -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 <T> IMResult<T> httpJsonPost(String path, Object object, Class<T> 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{