package com.ruoyi.system.service;
|
|
import org.junit.Test;
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
|
import javax.net.ssl.HttpsURLConnection;
|
import javax.net.ssl.SSLContext;
|
import javax.net.ssl.TrustManager;
|
import javax.net.ssl.X509TrustManager;
|
import java.io.BufferedReader;
|
import java.io.InputStreamReader;
|
import java.io.OutputStream;
|
import java.net.HttpURLConnection;
|
import java.net.URL;
|
import java.net.URLEncoder;
|
import java.security.cert.X509Certificate;
|
import java.util.HashMap;
|
import java.util.Map;
|
|
/**
|
* 旧系统HTTPS接口测试
|
* 测试admin_save_19.gds接口调用
|
*
|
* @author ruoyi
|
* @date 2025-11-09
|
*/
|
public class LegacySystemHttpsTest {
|
|
private static final Logger log = LoggerFactory.getLogger(LegacySystemHttpsTest.class);
|
|
/**
|
* 测试调用admin_save_19.gds接口(创建服务单)
|
*/
|
@Test
|
public void testCreateServiceOrder() {
|
try {
|
String url = "https://sys.966120.com.cn/admin_save_19.gds";
|
|
// 构建请求参数
|
Map<String, String> params = buildTestParams();
|
|
// 发送请求
|
String response = sendHttpsPost(url, params);
|
|
// 输出响应
|
log.info("接口响应:{}", response);
|
System.out.println("接口响应:" + response);
|
|
// 解析响应
|
if (response != null && response.startsWith("OK:")) {
|
String serviceOrdId = response.substring(3).trim();
|
log.info("服务单创建成功,ServiceOrdID: {}", serviceOrdId);
|
System.out.println("✅ 服务单创建成功,ServiceOrdID: " + serviceOrdId);
|
} else {
|
log.error("服务单创建失败,响应: {}", response);
|
System.out.println("❌ 服务单创建失败,响应: " + response);
|
}
|
|
} catch (Exception e) {
|
log.error("测试异常", e);
|
e.printStackTrace();
|
}
|
}
|
|
/**
|
* 构建测试参数
|
*/
|
private Map<String, String> buildTestParams() {
|
Map<String, String> params = new HashMap<>();
|
|
// 基础信息
|
params.put("adminID", "1312");
|
params.put("ServiceOrdClass", "BF");
|
params.put("ServiceOrdAreaType", "1");
|
params.put("ServiceOrdType", "20");
|
params.put("ServiceOrdState", "2");
|
params.put("ServiceOrdStartDate", "2025-11-09");
|
|
// 预约时间
|
params.put("ServiceOrdApptDate", "2025-11-09 16:56:31");
|
|
// 联系人信息
|
params.put("ServiceOrdCoName", "李测试11");
|
params.put("ServiceOrdCoPhone", "13602220102");
|
params.put("ServiceOrdCoTies", "");
|
|
// 患者信息
|
params.put("ServiceOrdPtName", "李测试21");
|
params.put("ServiceOrdPtAge", "");
|
params.put("ServiceOrdPtKG", "");
|
params.put("ServiceOrdPtSex", "");
|
params.put("ServiceOrdPtNat", "");
|
params.put("ServiceOrdPtIDCard", "");
|
|
// 医院信息
|
params.put("ServiceOrdPtOutHosp", "广东省第二人民医院天河医院(广东燕岭医院)");
|
params.put("ServiceOrdPtOutHospID", "310");
|
params.put("ServiceOrdPtInHosp", "家中");
|
params.put("ServiceOrdPtInHospID", "153");
|
|
// 科室信息
|
params.put("ServiceOrdPtServices", "其他");
|
params.put("ServiceOrdPtServicesID", "22");
|
params.put("ServiceOrdPtInServices", "其他");
|
params.put("ServiceOrdPtInServicesID", "0");
|
|
// 病情信息
|
params.put("ServiceOrdPtDiagnosis", "");
|
params.put("ServiceOrdPtCondition", "");
|
params.put("ServiceOrdTaskRemarks", "");
|
params.put("ServiceOrdPtDoctor", "");
|
params.put("ServiceOrdPtDoctorPhone", "");
|
|
// 地址信息
|
params.put("province", "");
|
params.put("city", "");
|
params.put("ServiceOrdTraStreet", "广东省广州市天河区棠安路533号");
|
params.put("ServiceOrdTraStreetCoo", "");
|
params.put("ServiceOrdTraEnd", "天河区广州市-天河区-柏德路101号");
|
params.put("ServiceOrdTraEndCoo", "");
|
params.put("ServiceOrdTraVia", "");
|
|
// 距离和价格信息
|
params.put("ServiceOrdViaDistance", "0");
|
params.put("ServiceOrdTraDistance", "10.70");
|
params.put("ServiceOrdTraDuration", "");
|
params.put("ServiceOrdTraUnitPrice", "0");
|
params.put("ServiceOrdTraOfferPrice", "154.00");
|
params.put("ServiceOrdTraTxnPrice", "154.00");
|
params.put("ServiceOrdTraPrePayment", "0");
|
params.put("SettlementPrice", "0");
|
params.put("ServiceOrdTraPriceReason", "");
|
|
// 其他信息
|
params.put("Phone", "13602220102");
|
params.put("TEL_Time", "2025-11-09 16:58:21");
|
params.put("TEL_Remarks", "新系统同步");
|
params.put("TransferModeID", "");
|
params.put("ServiceOrdVIP", "0");
|
params.put("ServiceOrd_CC_ID", "");
|
params.put("ServiceOrd_Sale_ID", "");
|
params.put("ServiceOrdIntroducer", "");
|
params.put("ServiceOrd_work_ID", "");
|
params.put("ServiceOrd_work_IDs", "");
|
params.put("ServiceOrd_work_is", "0");
|
params.put("CommissionScenarioID", "0");
|
params.put("ServiceOrdOperationRemarks", "新系统同步创建");
|
params.put("ServiceOrdEstimatedOrderDate", "");
|
params.put("ServiceOrdSource", "10");
|
params.put("OrderLevel", "0");
|
params.put("ServiceOrdDepartureType", "1");
|
params.put("ConditionLevel", "0");
|
params.put("DirectionType", "0");
|
params.put("ServiceOrd_m", "1");
|
params.put("FromHQ2_is", "0");
|
params.put("OrderPrice_Auto", "0");
|
|
return params;
|
}
|
|
/**
|
* 发送HTTPS POST请求(忽略SSL证书验证)
|
*/
|
private String sendHttpsPost(String urlString, Map<String, String> params) throws Exception {
|
URL url = new URL(urlString);
|
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
|
|
// 如果是HTTPS请求,配置SSL信任所有证书
|
if (conn instanceof HttpsURLConnection) {
|
HttpsURLConnection httpsConn = (HttpsURLConnection) conn;
|
httpsConn.setSSLSocketFactory(createTrustAllSSLContext().getSocketFactory());
|
httpsConn.setHostnameVerifier((hostname, session) -> true);
|
log.info("配置HTTPS连接,信任所有SSL证书");
|
}
|
|
try {
|
// 设置连接属性
|
conn.setRequestMethod("POST");
|
conn.setConnectTimeout(30000);
|
conn.setReadTimeout(60000);
|
conn.setDoOutput(true);
|
conn.setDoInput(true);
|
conn.setUseCaches(false);
|
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded;charset=GBK");
|
conn.setRequestProperty("Accept-Charset", "GBK");
|
conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64)");
|
|
// 构建POST数据
|
StringBuilder postData = new StringBuilder();
|
for (Map.Entry<String, String> entry : params.entrySet()) {
|
if (postData.length() > 0) {
|
postData.append("&");
|
}
|
postData.append(URLEncoder.encode(entry.getKey(), "GBK"));
|
postData.append("=");
|
postData.append(URLEncoder.encode(entry.getValue(), "GBK"));
|
}
|
|
log.info("请求URL: {}", urlString);
|
log.info("请求参数长度: {}", postData.length());
|
|
// 发送POST数据
|
try (OutputStream os = conn.getOutputStream()) {
|
os.write(postData.toString().getBytes("GBK"));
|
os.flush();
|
}
|
|
// 读取响应
|
int responseCode = conn.getResponseCode();
|
log.info("响应码: {}", responseCode);
|
|
if (responseCode == HttpURLConnection.HTTP_OK) {
|
try (BufferedReader reader = new BufferedReader(
|
new InputStreamReader(conn.getInputStream(), "GBK"))) {
|
StringBuilder response = new StringBuilder();
|
String line;
|
while ((line = reader.readLine()) != null) {
|
response.append(line);
|
}
|
return response.toString().trim();
|
}
|
} else {
|
log.error("请求失败,响应码: {}", responseCode);
|
throw new Exception("HTTPS请求失败,响应码: " + responseCode);
|
}
|
|
} finally {
|
conn.disconnect();
|
}
|
}
|
|
/**
|
* 创建信任所有SSL证书的SSLContext
|
*/
|
private SSLContext createTrustAllSSLContext() throws Exception {
|
TrustManager[] trustAllCerts = new TrustManager[] {
|
new X509TrustManager() {
|
@Override
|
public X509Certificate[] getAcceptedIssuers() {
|
return null;
|
}
|
|
@Override
|
public void checkClientTrusted(X509Certificate[] certs, String authType) {
|
// 信任所有客户端证书
|
}
|
|
@Override
|
public void checkServerTrusted(X509Certificate[] certs, String authType) {
|
// 信任所有服务器证书
|
}
|
}
|
};
|
|
SSLContext sslContext = SSLContext.getInstance("TLS");
|
sslContext.init(null, trustAllCerts, new java.security.SecureRandom());
|
return sslContext;
|
}
|
}
|