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 map = new HashMap(); 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 map, String encoding) { CloseableHttpClient httpClient = null; HttpPost httpPost = null; String result = null; try { httpClient = HttpClients.createDefault(); httpPost = new HttpPost(url); List list = new ArrayList(); Iterator iterator = map.entrySet().iterator(); while (iterator.hasNext()) { Map.Entry elem = (Map.Entry) 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; } }