liusheng
5 天以前 cc479e6a056785103996cc7ea67dbd5faa3e800e
ruoyi-common/src/main/java/com/ruoyi/common/utils/http/HttpUtils.java
@@ -215,6 +215,23 @@
    }
    public static String sendPostByHeader(String url, String param, Map<String, String> headers) {
        // 不设超时:与历史行为一致(老调用方一个字节都不变)
        return sendPostByHeader(url, param, headers, 0, 0);
    }
    /**
     * 带超时的 POST(JSON 报文头 + 自定义 header)。
     * <p>
     * ⚠️ <b>为什么会有这个重载</b>:上面的老方法<b>没有连接/读超时</b>,
     * 一旦对端不响应,调用线程会无限期挂住。批量按患者调用的采集
     * (如"在院信息刷新",一轮几千次)承受不起这个风险,所以补一个显式超时的重载;
     * 老方法改为委托本方法并传 0(0 = 不设超时),行为与改造前完全一致。
     *
     * @param connectTimeoutMs 连接超时(毫秒);{@code <=0} 表示不设
     * @param readTimeoutMs    读超时(毫秒);{@code <=0} 表示不设
     */
    public static String sendPostByHeader(String url, String param, Map<String, String> headers,
                                          int connectTimeoutMs, int readTimeoutMs) {
        StringBuilder result = new StringBuilder();
        HttpURLConnection conn = null;
        try {
@@ -228,6 +245,12 @@
            conn.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
            conn.setDoOutput(true);
            conn.setDoInput(true);
            if (connectTimeoutMs > 0) {
                conn.setConnectTimeout(connectTimeoutMs);
            }
            if (readTimeoutMs > 0) {
                conn.setReadTimeout(readTimeoutMs);
            }
            if (headers != null) {
                for (Map.Entry<String, String> entry : headers.entrySet()) {