From 0763417ca8a2f3fe5a1ef1a6e2c7dc7b397fd89c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=98=8E?= Date: Thu, 15 May 2025 12:17:42 +0800 Subject: [PATCH] =?UTF-8?q?refactor(ic):=20=E9=87=8D=E6=9E=84=20HttpPostOt?= =?UTF-8?q?herSysImpl=20=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修改了请求 MES 系统的方式 - 添加了获取 MES token 的方法- 优化了代码结构,增加了常量定义 - 新增了处理 cookie 的方法 --- .../nc/bs/ic/HttpPostOtherSysImpl.java | 116 ++++++++++++++---- 1 file changed, 94 insertions(+), 22 deletions(-) diff --git a/ic/src/private/nc/bs/ic/HttpPostOtherSysImpl.java b/ic/src/private/nc/bs/ic/HttpPostOtherSysImpl.java index 0f2fd70..b601a3a 100644 --- a/ic/src/private/nc/bs/ic/HttpPostOtherSysImpl.java +++ b/ic/src/private/nc/bs/ic/HttpPostOtherSysImpl.java @@ -8,45 +8,46 @@ import nc.pub.fa.common.util.StringUtils; import nc.vo.pubapp.pattern.exception.ExceptionUtils; import java.io.BufferedReader; +import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.HttpURLConnection; import java.net.URL; import java.util.HashMap; +import java.util.List; import java.util.Map; public class HttpPostOtherSysImpl implements IHttpPostOtherSys { + private static final String USER_ID = "BIP"; + private static final String PASSWORD = "BIP@2025bip"; + private static final String CLIENT_TYPE = "S"; + private static final String EP_ID = ""; + private static final String LOGIN_URL = "/GTHINKING/AjaxService/N_MISPRO/100208057.ashx/Login"; + @Override public String callLE(String url, JSONObject json) { - String leip = SysParaInitQuery.getParaString(PubEnv.getPk_group(), "LEIP"); -// String leip = "http://60.214.115.166:20003"; - String baseurl = leip + url; - String token = this.getLEToken(leip); +// String leip = SysParaInitQuery.getParaString(PubEnv.getPk_group(), "LEIP"); + String mesip = "http://192.168.29.32"; + String baseurl = mesip + url; + String cookie = this.getMESToken(mesip); Map headers = new HashMap<>(); - headers.put("x-token", token); - String postResult = doPost(baseurl, headers, json); - JSONObject result = JSONObject.parseObject(postResult); - String code = result.getString("code"); - if (StringUtils.equals(code, "0")) { - return postResult; - } else { - String message = result.getString("message"); - ExceptionUtils.wrappBusinessException(message); - return message; - } + headers.put("Set-Cookie", cookie); + return doPost(baseurl, headers, json); } - private String getLEToken(String leip) { + private String getMESToken(String leip) { JSONObject jsonObject = new JSONObject(); - jsonObject.put("username", "nc_le"); - jsonObject.put("password", "7qTx8aPxVQ3n3j3HaKxZvLepyCyNm6gk967V7qcmJZkfBbJFEQZqPdQJMgfQNWdQ"); - String result = doPost(leip + "/login", null, jsonObject); - JSONObject parsed = JSONObject.parseObject(result); - String token = parsed.getString("token"); - return token; + jsonObject.put("userId", USER_ID); + jsonObject.put("password", PASSWORD); + jsonObject.put("clientType", CLIENT_TYPE); + jsonObject.put("epId", EP_ID); + return postCookie(leip + LOGIN_URL, null, jsonObject); } + /** + * ҵpost + */ private String doPost(String baseurl, Map map, JSONObject json) { BufferedReader reader = null; try { @@ -86,4 +87,75 @@ public class HttpPostOtherSysImpl implements IHttpPostOtherSys { throw new RuntimeException(e); } } + + /** + * ȡcookiepost + */ + private String postCookie(String baseurl, Map map, JSONObject json) { + BufferedReader reader = null; + try { + URL url = new URL(baseurl); + HttpURLConnection connection = (HttpURLConnection) url.openConnection(); + connection.setDoOutput(true); + connection.setDoInput(true); + connection.setUseCaches(false); + connection.setInstanceFollowRedirects(true); + connection.setRequestMethod("POST"); + connection.setRequestProperty("Content-Type", "application/json"); + + if (map != null) { + for (String key : map.keySet()) { + connection.setRequestProperty(key, map.get(key)); + } + } + + connection.connect(); + + // д + OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream(), "UTF-8"); + if (json != null) { + out.append(json.toString()); + } + out.flush(); + out.close(); + + // ȡӦͷе Set-Cookie + Map> headers = connection.getHeaderFields(); + String setCookieHeader = null; + + for (Map.Entry> entry : headers.entrySet()) { + if ("Set-Cookie".equalsIgnoreCase(entry.getKey())) { + setCookieHeader = entry.getValue().get(0); // ȡһ Set-Cookie ͷ + break; + } + } + if (setCookieHeader != null) { + return extractAspxAuth(setCookieHeader); // ASPXAUTH ֵ + } else { + return null; + } + + } catch (Exception e) { + throw new RuntimeException(e); + } finally { + if (reader != null) { + try { + reader.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + } + + // ȡ .ASPXAUTH ֵ + private String extractAspxAuth(String cookieHeader) { + String[] cookies = cookieHeader.split("; "); + for (String cookie : cookies) { + if (cookie.startsWith(".ASPXAUTH=")) { + return cookie.substring(".ASPXAUTH=".length()); + } + } + return null; + } }