package com.ks.tool.bkz.util.tb;
|
|
import com.google.gson.ExclusionStrategy;
|
import com.google.gson.FieldAttributes;
|
import com.google.gson.Gson;
|
import com.google.gson.GsonBuilder;
|
import com.ks.tool.bkz.dto.DaTaoKeDetailV2;
|
import com.ks.tool.bkz.util.HttpUtil;
|
import com.ks.tool.bkz.util.StringUtil;
|
import com.ks.tool.bkz.util.TimeUtil;
|
import net.sf.json.JSONObject;
|
import org.apache.commons.httpclient.HttpClient;
|
import org.apache.commons.httpclient.HttpException;
|
import org.apache.commons.httpclient.methods.GetMethod;
|
|
import java.io.IOException;
|
import java.io.UnsupportedEncodingException;
|
import java.net.URLEncoder;
|
import java.util.*;
|
|
public class DaTaoKeApiUtil {
|
final static String APP_KEY = "5cf75b0f2c0e4";
|
final static String APP_KEY_SECRET = "b14f1fa115129a447937ca998b311d1e";
|
|
static Gson gson = null;
|
static {
|
gson = new GsonBuilder().setExclusionStrategies(new ExclusionStrategy() {
|
@Override
|
public boolean shouldSkipField(FieldAttributes f) {
|
return f.getName().equals("createTime");// 忽略createTime的解析
|
}
|
|
@Override
|
public boolean shouldSkipClass(Class<?> clazz) {
|
return false;
|
}
|
}).create();
|
}
|
|
private static String get(String url) {
|
HttpClient client = new HttpClient();
|
try {
|
client.getHttpConnectionManager().getParams().setConnectionTimeout(5000);
|
client.getHttpConnectionManager().getParams().setSoTimeout(5000);
|
GetMethod method = new GetMethod(url);
|
client.executeMethod(method);
|
return method.getResponseBodyAsString();
|
} catch (HttpException e) {
|
e.printStackTrace();
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
return "";
|
}
|
|
private static String request(String url) {
|
String result = null;
|
|
while (result == null) {
|
try {
|
result = get(url);
|
if ((result != null && result.startsWith("<html>")) || StringUtil.isNullOrEmpty(result))
|
result = null;
|
} catch (Exception e) {
|
try {
|
Thread.sleep(400);
|
} catch (InterruptedException e1) {
|
}
|
}
|
}
|
|
return result;
|
}
|
|
public static DaTaoKeDetailV2 getGoodsDetailByGoodsId(Long goodsId) {
|
Map<String, String> params = new TreeMap<>();
|
params.put("version", "v1.1.1");
|
params.put("appKey",APP_KEY);
|
params.put("goodsId", goodsId + "");
|
params.put("sign", getSign(params, APP_KEY_SECRET));
|
String result = HttpUtil
|
.get("https://openapi.dataoke.com/api/goods/get-goods-details", params,
|
new HashMap<>());
|
System.out.println(result);
|
JSONObject json = JSONObject.fromObject(result);
|
JSONObject dataJson = json.optJSONObject("data");
|
if (dataJson != null) {
|
return parseDaTaoKeDetailV2(dataJson);
|
}
|
return null;
|
}
|
|
private static DaTaoKeDetailV2 parseDaTaoKeDetailV2(JSONObject json) {
|
DaTaoKeDetailV2 detail = gson.fromJson(json.toString(), DaTaoKeDetailV2.class);
|
return detail;
|
}
|
|
|
private static String requestGet(String url, Map<String, String> params) {
|
Iterator<String> keys = params.keySet().iterator();
|
url += "?";
|
while (keys.hasNext()) {
|
String key = keys.next();
|
try {
|
url += String.format("%s=%s&", key, URLEncoder.encode(params.get(key), "UTF-8"));
|
} catch (UnsupportedEncodingException e) {
|
e.printStackTrace();
|
}
|
}
|
return HttpUtil.get(url, 10000);
|
}
|
|
|
private static String getSign(Map<String, String> map, String secretKey) {
|
if (map.size() == 0) {
|
return "";
|
}
|
StringBuffer sb = new StringBuffer("");
|
Set<String> keySet = map.keySet();
|
Iterator<String> iter = keySet.iterator();
|
while (iter.hasNext()) {
|
String key = iter.next();
|
sb.append("&" + key + "=" + map.get(key));
|
}
|
sb.deleteCharAt(0);
|
String signStr = "";
|
signStr = sb.toString() + "&key=" + secretKey;
|
return StringUtil.Md5(signStr).toUpperCase();
|
}
|
}
|