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

118 lines
4.7 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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;
}
}