2024-04-14 21:05:01 +08:00

95 lines
3.6 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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) {
log.error("error", e);
} 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) {
log.error("error", e);
}
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;
}
}