package com.ynxbd.common.helper.xbd; import com.alibaba.fastjson.JSONObject; import com.ynxbd.common.helper.http.OkHttpHelper; import lombok.extern.slf4j.Slf4j; import okhttp3.*; import java.net.URLEncoder; import java.nio.charset.StandardCharsets; import java.util.HashMap; import java.util.Map; /** * @author 李进才 * @ClassName HttpHelper * @Description 在线病历打印请求的http请求方法 * @date 2023/4/20 09:40 */ @Slf4j public class HttpHelper { /** * Get执行后台指定方法 * @param methodName 方法名 * @param paramDic 参数 * @return 返回的数据(Json) */ public static String ExecMethodGet (String methodName, Object paramDic){ return UseGet(methodName,paramDic); } /** * Get执行后台指定方法 * @param methodName 方法名 * @return 返回的数据(Json) */ public static String ExecMethodGet (String methodName){ return UseGet(methodName,null); } private static String UseGet(String methodName, Object paramDic) { try { String url = "http://192.168.12.66:8080"; OkHttpClient httpClient = OkHttpHelper.creatClient(); HttpUrl.Builder urlBuilder = HttpUrl.parse(url+"/api/SqlContext/ExecMethodByNameEncryption").newBuilder(); // 加密序列化 String methodNameEnv = URLEncoder.encode(EncHelper.AES_Encrypt(methodName), StandardCharsets.UTF_8.toString()); urlBuilder.addQueryParameter("methodNameEnc", methodNameEnv); String paramJson = JSONObject.toJSONString(paramDic==null? "" :paramDic); // json 加密序列化传入链接 String paramsStrEnv = URLEncoder.encode(EncHelper.AES_Encrypt(paramJson), StandardCharsets.UTF_8.toString()); urlBuilder.addQueryParameter("paramsStrEnc", paramsStrEnv); String md5Check = URLEncoder.encode(EncHelper.MD5Encrypt64(methodName + paramJson),StandardCharsets.UTF_8.toString()); urlBuilder.addQueryParameter("modCode", md5Check); Request request = new Request.Builder() .url(urlBuilder.toString()) .get() .build(); Response response = httpClient.newCall(request).execute(); // 清除并关闭线程池 // httpClient.dispatcher().executorService().shutdown(); // 清除并关闭连接池 // httpClient.connectionPool().evictAll(); JSONObject JSON = JSONObject.parseObject(response.body().string()); if(response.isSuccessful()){ return JSON.getString("Data").replaceAll(" ",""); } else { log.error("[在线病例打印]返回错误:方法名-{},错误-{}",methodName,JSON.getString("Msg")); throw new Exception("方法:" + methodName + "错误:" + JSON.getString("Msg") ); } } catch (Exception e){ log.error("[在线病例打印]请求错误-{}",e.getMessage()); return e.getMessage(); } } public static void main(String[] args) { Map test = new HashMap<>(); test.put("patientID","10947918"); System.out.println(ExecMethodGet("BLSM_Appointment_GetBA", test)); } }