| | |
| | | * @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。 |
| | | * @return 所代表远程资源的响应结果 |
| | | */ |
| | | public static String sendPost(String url, String param) { |
| | | public static Boolean sendPost(String url, String param) { |
| | | PrintWriter out = null; |
| | | BufferedReader in = null; |
| | | StringBuilder result = new StringBuilder(); |
| | | boolean success = false; |
| | | try { |
| | | log.info("sendPost - {}", url); |
| | | URL realUrl = new URL(url); |
| | |
| | | result.append(line); |
| | | } |
| | | log.info("recv - {}", result); |
| | | success = true; |
| | | } catch (ConnectException e) { |
| | | log.error("调用HttpUtils.sendPost ConnectException, url=" + url + ",param=" + param, e); |
| | | } catch (SocketTimeoutException e) { |
| | |
| | | log.error("调用in.close Exception, url=" + url + ",param=" + param, ex); |
| | | } |
| | | } |
| | | return result.toString(); |
| | | return success; |
| | | } |
| | | |
| | | public static String sendPostByHeaderOld(String url, String param, Map<String, String> headers) { |
| | |
| | | } |
| | | |
| | | 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 { |
| | |
| | | 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()) { |