public static List getSubscribeAddressesWithHttpEndpoint()

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;
    }