95 lines
3.6 KiB
Java
95 lines
3.6 KiB
Java
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;
|
||
}
|
||
|
||
|
||
}
|