95 lines
3.6 KiB
Java
Raw Normal View History

2023-02-16 15:28:15 +08:00
package com.zhgd.xmgl.util.imou;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.methods.RequestEntity;
import org.apache.commons.httpclient.methods.StringRequestEntity;
import org.apache.commons.httpclient.params.HttpMethodParams;
import org.apache.commons.httpclient.protocol.Protocol;
import org.apache.commons.httpclient.protocol.ProtocolSocketFactory;
import org.apache.commons.io.IOUtils;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
@Slf4j
public class HttpSend {
private static final String url = "https://openapi.lechange.cn/openapi/";
public static JSONObject execute(Map<String, Object> paramsMap, String method, String appId, String appSecret) {
Map<String, Object> map = paramsInit(paramsMap, appId, appSecret);
// 返回json
JSONObject jsonObj = doPost(url + method, map);
log.info("=============================");
log.info("返回结果:" + jsonObj.toJSONString());
return jsonObj;
}
public static JSONObject doPost(String url, Map<String, Object> map) {
String json = JSON.toJSONString(map);
ProtocolSocketFactory factory = new MySecureProtocolSocketFactory();
Protocol.registerProtocol("https", new Protocol("https", factory, 443));
HttpClient client = new HttpClient();
client.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, "UTF-8");
PostMethod method = new PostMethod(url);
JSONObject jsonObject = new JSONObject();
try {
RequestEntity entity = new StringRequestEntity(json, "application/json", "UTF-8");
method.setRequestEntity(entity);
client.executeMethod(method);
InputStream inputStream = method.getResponseBodyAsStream();
String result = IOUtils.toString(inputStream, "UTF-8");
jsonObject = JSONObject.parseObject(result);
} catch (Exception e) {
2024-04-14 21:05:01 +08:00
log.error("error", e);
2023-02-16 15:28:15 +08:00
} finally {
method.releaseConnection();
}
return jsonObject;
}
protected static Map<String, Object> paramsInit(Map<String, Object> paramsMap, String appId, String appSecret) {
long time = System.currentTimeMillis() / 1000;
String nonce = UUID.randomUUID().toString();
String id = UUID.randomUUID().toString();
StringBuilder paramString = new StringBuilder();
paramString.append("time:").append(time).append(",");
paramString.append("nonce:").append(nonce).append(",");
paramString.append("appSecret:").append(appSecret);
String sign = "";
// 计算MD5得值
try {
//log.info("传入参数:" + paramString.toString().trim());
sign = DigestUtils.md5Hex(paramString.toString().trim().getBytes("UTF-8"));
} catch (Exception e) {
2024-04-14 21:05:01 +08:00
log.error("error", e);
2023-02-16 15:28:15 +08:00
}
Map<String, Object> systemMap = new HashMap<String, Object>();
systemMap.put("ver", "1.0");
systemMap.put("sign", sign);
systemMap.put("appId", appId);
systemMap.put("nonce", nonce);
systemMap.put("time", time);
Map<String, Object> map = new HashMap<String, Object>();
map.put("system", systemMap);
map.put("params", paramsMap);
map.put("id", id);
return map;
}
}