Blame view

src/com/ectrip/trips/net/DataTool.java 3.87 KB
3c2353cd   杜方   1、畅游通核销app源码提交;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
  package com.ectrip.trips.net;
  
  import java.io.UnsupportedEncodingException;
  
  import com.alibaba.fastjson.JSON;
  import com.ectrip.cyt.base.DataTrans;
  import com.ectrip.cyt.base.Request;
  import com.ectrip.cyt.base.Response;
  import com.ectrip.cyt.config.MyApp;
  import com.ectrip.cyt.utils.Base64;
  import com.ectrip.cyt.utils.LogUtil;
  import com.fourmob.datetimepicker.Utils;
  
  public class DataTool {
  	/**
  	 * 通过signkeydata验证数据,验证通过会返回true,未通过返回false
  	 * 不建议外部调用此方法
  	 * @param signkey
  	 * @param data
  	 * @param signed
  	 * @return
  	 */
  	public static boolean checkData(String signkey,String data,String signed){
  		return signed.equals(getSign(signkey,data));
  	}
  	/**
  	 * 通过signkey和实体验证数据, 验证通过返回该实体, 未通过返回null
  	 * 不建议外部调用此方法
  	 * @param dataTrans
  	 * @return
  	 */
  	protected static DataTrans checkData(String signkey,DataTrans dataTrans){
  		return checkData(signkey,dataTrans.getData(),dataTrans.getSigned())==true?dataTrans:null;
  	}
  
  	/**
  	 * 通过dataTransJsonStr字符串验证数据, 验证通过返回该字符串对应的实体, 未通过返回null
  	 * 在接收到字符串时可以使用此方法, 建议验证时调用此方法
  	 * 此方法会给requestresponse塞值
  	 * @param dataTransJsonStr
  	 * @return
  	 */
  	public static DataTrans checkData(String signkey,String dataTransJsonStr,Class<?> dataType){
  		DataTrans dataTrans=checkData(signkey,(DataTrans)JSON.parseObject(dataTransJsonStr, DataTrans.class));
  		if(null!=dataTrans){
  			if(Request.class.isAssignableFrom(dataType)){
  				dataTrans.request=(Request)JSON.parseObject(dataTrans.getData(), dataType);
  			}else if(Response.class.isAssignableFrom(dataType)){
  				dataTrans.response=(Response)JSON.parseObject(dataTrans.getData(), dataType);
  			}
  		}
  		return dataTrans;
  	};
  	public static DataTrans checkData(String signkey,String dataTransJsonStr){
  		return checkData(signkey,(DataTrans)JSON.parseObject(dataTransJsonStr, DataTrans.class));
  	};
  	/**
  	 * 签名
  	 * @param signkey
  	 * @param data
  	 * @return
  	 */
  //	public static String getSign(String signkey,String data){
  //		//签名: md5(分配的密匙+base64(data))
  //		try {
  //			String signdata=signkey+data;
  //			return MD5Util.signMD5(new String(
  //					Base64.encodeBase64(signdata.getBytes("UTF-8"))),
  //					"UTF-8");
  //		} catch (UnsupportedEncodingException e) {
  //			e.printStackTrace();
  //		}
  //		return "";
  //	}
  
  	public static String getSign(String signkey,String data){
  		//签名: md5(分配的密匙+base64(data))
  		byte[] responseByte = null;
  		try {
  			String signData = signkey + data;
  			String base64 = Base64.encode(signData.getBytes("UTF-8"));
  			LogUtil.i("responseData:" + base64);
  			String responseSign = MD5Util.signMD5(base64,"UTF-8");
  			LogUtil.i("responseSign:" + responseSign);
  			return responseSign;
  		} catch (UnsupportedEncodingException e) {
  			e.printStackTrace();
  			LogUtil.i("OTA Service : getErrorResponseJson : String to xml UTF-8 Error !");
  		}catch (Exception e){
  			e.printStackTrace();
  		}
  		return "";
  	}
  
  	/**
  	 * 给对象  签名, 返回带有签名的完整对象, 在对象需要赋值签名并且该对象还要继续被调用时 使用此方法
  	 * @param datain
  	 * @return
  	 */
  	public static DataTrans envelopeData(String signkey,DataTrans datain){
  		datain.setSigned(getSign(signkey,datain.getData()));
  		return datain;
  	}
  	/**
  	 * 给对象  签名, 返回带有签名的完整字符串, 在把对象封装成json字符串时使用此方法
  	 * @param datain
  	 * @param signkey 标识
  	 * @param identity 编码
  	 * @return
  	 */
  	public static String envelopeData(Object requestOrResponse,String signkey,String identity){
  		String data = null;
  		try {
  			data = JSON.toJSONString(requestOrResponse);
  		} catch (Exception e) {
  			e.printStackTrace();
  		}
  		return JSON.toJSONString(new DataTrans(data, getSign(signkey, data), identity));
  	}
  }