hz-zhhq-app-service/greenH5modul/.svn/pristine/ad/adf84491d2fe2b719dd2a8465fe...

118 lines
4.7 KiB
Plaintext
Raw Normal View History

2025-01-21 13:12:35 +08:00
package com.nationalelectric.greenH5.utils;
import com.alibaba.fastjson.JSONObject;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import java.net.URLDecoder;
import java.util.*;
/**
* @Author:Lin
* @create:2020/5/29 14:20
*/
public class GetTokenUtil {
public static void main(String[] args) throws Exception {
// methodPath从能力开放平台获取
String url = "http://124.126.19.5:19118/protocolTrans/openapi/ShopService_getUserToken";
JSONObject model = new JSONObject();
JSONObject body = new JSONObject();
// 在调用接口前需要先进行平台认证获取token
// 将能力开放平台需要的参数封装入body
body.put("appId", "40282a077337e97601734b09cca80180"); // appId必填不加密
body.put("authToken", encrypt("myAuthToken")); // authToken必填需加密
model.put("phone", "13888888888");
model.put("card_no", "123123");
model.put("system_code", "300028");
model.put("name", "张三");
model.put("department", "");
System.out.println(model.toJSONString());
body.put("map", encrypt(model.toJSONString()));
// // 将业务数据封装进body中参数为key-value形式key不加密value根据接口文档的要求进行加密
// // 如果参数是java本身的对象就直接封装入body
// body.put("stakeNo", encrypt("0")); // int型
// body.put("orderDate", encrypt("2018-01-01"));// date型数据
// // 如果参数是object先封装进一个json对象中再把这个json对象封装进body
// model.put("password", "ddqc_123");
// model.put("userName", "isv_mrst");
// int[] seq = { 1, 2, 3 };
// model.put("startChargeSeq", seq); // list[int]型
// model.put("businessLabel", 5);
// body.put("model", encrypt(model.toJSONString()));// 加密
// 将所有参数封装入args
Map<String, Object> map = new HashMap<String, Object>();
map.put("args", body); // 这里必须是args
// 调用http获取返回值
String jsonStr = mapPost(url, map, "utf-8");
// 解析返回值,返回值均在"data"中
JSONObject jsonObj = JSONObject.parseObject(jsonStr);
jsonObj.put("data", URLDecoder.decode(dencrypt(jsonObj.getString("data"))));// 为防止中文乱码
// status和info是开放平台加入的参数供ISV判断接口是否调用成功。
if (jsonObj.getString("status").equals("0")) {
// 其他参数根据接口文档进行解析
JSONObject para1 = jsonObj.getJSONObject("para1");
System.out.println(para1.toJSONString());
}
}
public static String encrypt(String data) throws Exception {
String pass_key = "63c65fce72684253";
String iv_str = "99dbcce28d6d443e";
return AESUtil.Encrypt(data, pass_key, iv_str);
}
public static String dencrypt(String data) throws Exception {
String pass_key = "63c65fce72684253";
String iv_str = "99dbcce28d6d443e";
return AESUtil.Decrypt(data, pass_key, iv_str);
}
public static String mapPost(String url, Map<String, Object> map, String encoding) {
CloseableHttpClient httpClient = null;
HttpPost httpPost = null;
String result = null;
try {
httpClient = HttpClients.createDefault();
httpPost = new HttpPost(url);
List<NameValuePair> list = new ArrayList<NameValuePair>();
Iterator iterator = map.entrySet().iterator();
while (iterator.hasNext()) {
Map.Entry<String, String> elem = (Map.Entry<String, String>) iterator.next();
list.add(new BasicNameValuePair(elem.getKey(), String.valueOf(elem.getValue())));
}
if (list.size() > 0) {
UrlEncodedFormEntity entity = new UrlEncodedFormEntity(list, encoding);
httpPost.setEntity(entity);
}
HttpResponse response = httpClient.execute(httpPost);
if (response != null) {
HttpEntity resEntity = response.getEntity();
if (resEntity != null) {
result = EntityUtils.toString(resEntity, encoding);
}
}
} catch (Exception ex) {
ex.printStackTrace();
}
return result;
}
}