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 paramsMap, String method, String appId, String appSecret) { Map 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 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 paramsInit(Map 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 systemMap = new HashMap(); systemMap.put("ver", "1.0"); systemMap.put("sign", sign); systemMap.put("appId", appId); systemMap.put("nonce", nonce); systemMap.put("time", time); Map map = new HashMap(); map.put("system", systemMap); map.put("params", paramsMap); map.put("id", id); return map; } }