feat(ic): 实现了与其他系统进行HTTP POST交互的功能
- 新增了HttpPostOtherSysImpl类,实现了IHttpPostOtherSys接口 - 实现了调用LE系统接口的功能,包括获取token和发送POST请求 - 代码中使用了Fastjson、StringUtils等工具库- 异常处理使用了ExceptionUtils进行业务异常包装
This commit is contained in:
parent
8cfa66336a
commit
28c3c1e74a
|
@ -0,0 +1,89 @@
|
|||
package nc.bs.ic;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import nc.IHttpPostOtherSys;
|
||||
import nc.hr.utils.PubEnv;
|
||||
import nc.itf.scmpub.reference.uap.para.SysParaInitQuery;
|
||||
import nc.pub.fa.common.util.StringUtils;
|
||||
import nc.vo.pubapp.pattern.exception.ExceptionUtils;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.OutputStreamWriter;
|
||||
import java.net.HttpURLConnection;
|
||||
import java.net.URL;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public class HttpPostOtherSysImpl implements IHttpPostOtherSys {
|
||||
|
||||
@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);
|
||||
Map<String, String> 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;
|
||||
}
|
||||
}
|
||||
|
||||
private String getLEToken(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;
|
||||
}
|
||||
|
||||
private String doPost(String baseurl, Map<String, String> 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();
|
||||
// 一定要用BufferedReader 来接收响应, 使用字节来接收响应的方法是接收不到内容的
|
||||
OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream(), "UTF-8"); // UTF-8编码
|
||||
if (json != null) {
|
||||
out.append(json.toString());
|
||||
}
|
||||
out.flush();
|
||||
out.close();
|
||||
// 读取响应
|
||||
reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));
|
||||
String line;
|
||||
String res = "";
|
||||
while ((line = reader.readLine()) != null) {
|
||||
res += line;
|
||||
}
|
||||
reader.close();
|
||||
return res;
|
||||
} catch (Exception e) {
|
||||
// e.printStackTrace();
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
package nc;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
|
||||
|
||||
public interface IHttpPostOtherSys {
|
||||
|
||||
/**
|
||||
* xuwjl@yonyou.com 2025年4月24日 15:24:14
|
||||
* @param url LE的接口地址,不包含ip
|
||||
* @param json 入参
|
||||
*/
|
||||
public String callLE(String url, JSONObject json);
|
||||
|
||||
}
|
Loading…
Reference in New Issue