in dubbo-admin-server/src/main/java/org/apache/dubbo/admin/registry/nacos/NacosOpenapiUtil.java [37:93]
public static List<NacosData> getSubscribeAddressesWithHttpEndpoint(URL url, String serviceName) {
// 定义Nacos OpenAPI的URL
String nacosUrl = "http://" + url.getAddress() + "/nacos/v1/ns/service/subscribers?serviceName=" + serviceName;
if (StringUtils.isNotEmpty(url.getParameter("namespace"))) {
nacosUrl = nacosUrl + "&namespaceId=" + url.getParameter("namespace");
}
if (StringUtils.isNotEmpty(url.getParameter("group"))) {
nacosUrl = nacosUrl + "&groupName=" + url.getParameter("group");
}
// 创建URL对象
java.net.URL netUrl = null;
try {
netUrl = new java.net.URL(nacosUrl);
} catch (MalformedURLException e) {
throw new RuntimeException(e);
}
HttpURLConnection connection = null;
try {
// 创建HTTP连接
connection = (HttpURLConnection) netUrl.openConnection();
// 设置请求方法(GET或POST)
connection.setRequestMethod("GET");
// 发送请求并获取响应状态码
int responseCode = connection.getResponseCode();
if (responseCode == 200) {
// 读取响应内容
StringBuilder response = new StringBuilder();
try (BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()))) {
String line;
while ((line = reader.readLine()) != null) {
response.append(line);
}
} catch (Throwable t) {
logger.error("Error requesting nacos openapi, " + nacosUrl, t);
}
NacosResponse nacosResponse = JSON.parseObject(response.toString(), NacosResponse.class);
return nacosResponse.getSubscribers();
} else {
logger.error("Error requesting nacos openapi, " + nacosUrl + ", error code is " + responseCode);
}
} catch (IOException e) {
logger.error("Error requesting nacos openapi, " + nacosUrl, e);
} finally {
// 关闭连接
if (connection != null) {
connection.disconnect();
}
}
return Collections.EMPTY_LIST;
}