Blame view

src/com/ectrip/trips/net/ModelTools.java 7.41 KB
07670a44   黄灿宏   畅游通核销app: 1.增加日志上...
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
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
  package com.ectrip.trips.net;
  
  import com.alibaba.fastjson.JSON;
  import com.ectrip.cyt.bean.BaseRequest;
  import com.ectrip.cyt.bean.BaseResponse;
  import com.ectrip.cyt.bean.DataTranfer;
  import com.ectrip.cyt.utils.Base64;
  import com.ectrip.cyt.utils.LogUtil;
  import com.ectrip.cyt.utils.SignTools;
  
  
  /**
   * This is a tool class for Check Ticket Http
   * Created by lingkitho on 2017/3/1.
   */
  public class ModelTools {
  
      /**
       * 解析请求体 - Http请求转换成Bean对象
       * @param rawData 原始数据
       * @param clazz   类模板
       * @return Bean 对象
       */
      public static <T> T parseRequest(String rawData, Class<T> clazz) throws Exception {
  
  
          DataTranfer dataTranfer = null;
          String param;//请求数据
          try {
              dataTranfer = JSON.parseObject(rawData,DataTranfer.class);
              if(null == dataTranfer){
                  throw new Exception("原始数据为空!");
              }
              if(null == dataTranfer.getSigned()){
                  throw new Exception("签名为空!");
              }
              boolean isOk = SignTools.chechSign(dataTranfer.getSigned(),dataTranfer.getData());
              if(!isOk){
                  throw new Exception("签名验证失败!");
              }
  
          } catch (Exception e) {
              throw new Exception("原始数据json格式不正确!"+ LogUtil.getExMsg(e));
          }
          try {
              byte[] requestDataJson = Base64.decode(dataTranfer.getData());
              param = new String(requestDataJson);
          } catch (Exception e) {
              throw new Exception("请求数据解密失败!请勿篡改数据。请检查参数!");
          }
          if(null != param && param.length()>0) {
              try {
                  BaseResponse response = JSON.parseObject(param,BaseResponse.class);
                  if(response != null && response.getData() != null){
                      T obj = JSON.parseObject(response.getData().toString(), clazz);
                      LogUtil.i("CHECK","【请求数据返回成功】ResultBean="+response.getData().toString());
                      if(null == obj){
                          throw new Exception("转换后的请求实体为null,请检查参数");
                      }
                      return obj;
                  }
                  return  null;
              } catch (Exception e) {
                  throw new Exception("json实体转换错误。请检查参数,且确保参数与接口对应");
              }
          }else{
              return null;
          }
      }
  
      public static BaseResponse parseRequestFace(String rawData) throws Exception {
          BaseResponse response = null;
  
          DataTranfer dataTranfer = null;
          String param;//请求数据
          try {
              dataTranfer = JSON.parseObject(rawData,DataTranfer.class);
              if(null == dataTranfer){
                  throw new Exception("原始数据为空!");
              }
              if(null == dataTranfer.getSigned()){
                  throw new Exception("签名为空!");
              }
              boolean isOk = SignTools.chechSign(dataTranfer.getSigned(),dataTranfer.getData());
              if(!isOk){
                  throw new Exception("签名验证失败!");
              }
  
          } catch (Exception e) {
              throw new Exception("原始数据json格式不正确!"+ LogUtil.getExMsg(e));
          }
          try {
              byte[] requestDataJson = Base64.decode(dataTranfer.getData());
              param = new String(requestDataJson);
          } catch (Exception e) {
              throw new Exception("请求数据解密失败!请勿篡改数据。请检查参数!");
          }
          if(null != param && param.length()>0) {
              try {
                  response = JSON.parseObject(param,BaseResponse.class);
  //                if(response != null && response.getData() != null){
  ////                    T obj = JSON.parseObject(response.getData().toString(), clazz);
  ////                    T obj  = (T)response.getData();
  //                    LogUtil.i("CHECK","【请求数据返回成功】ResultBean="+response.getData().toString());
  //                    if(null == obj){
  //                        throw new Exception("转换后的请求实体为null,请检查参数");
  //                    }
  //                    return obj;
  //                }
                  return  response;
              } catch (Exception e) {
                  throw new Exception("json实体转换错误。请检查参数,且确保参数与接口对应");
              }
          }else{
              return null;
          }
      }
  
  
      /**
       * 解析请求体 - Http请求转换成Bean对象
       * @param rawData 原始数据
       * @param clazz   类模板
       * @return Bean 对象
       */
      public static <T> T parseBaseRequest(String rawData, Class<T> clazz) throws Exception {
  
          DataTranfer dataTranfer = null;
          String param;//请求数据
          try {
              dataTranfer = JSON.parseObject(rawData,DataTranfer.class);
              if(null == dataTranfer){
                  throw new Exception("原始数据为空!");
              }
              if(null == dataTranfer.getSigned()){
                  throw new Exception("签名为空!");
              }
              boolean isOk = SignTools.chechSign(dataTranfer.getSigned(),dataTranfer.getData());
              if(!isOk){
                  throw new Exception("签名验证失败!");
              }
  
          } catch (Exception e) {
              throw new Exception("原始数据json格式不正确!"+ LogUtil.getExMsg(e));
          }
          try {
              byte[] requestDataJson = Base64.decode(dataTranfer.getData());
              param = new String(requestDataJson);
          } catch (Exception e) {
              throw new Exception("请求数据解密失败!请勿篡改数据。请检查参数!");
          }
          if(null != param && param.length()>0) {
              try {
                      T obj = JSON.parseObject(param, clazz);
                      if(null == obj){
                          throw new Exception("转换后的请求实体为null,请检查参数");
                      }
                      return obj;
              } catch (Exception e) {
                  throw new Exception("json实体转换错误。请检查参数,且确保参数与接口对应");
              }
          }else{
              return null;
          }
      }
  
      public static String getParam (BaseRequest data , String method){
          String dataJson = JSON.toJSONString(data);//将请求的实体转换成json字符串
          String dataBase64 = Base64.encode(dataJson.getBytes());//将字符串进行base64加密
          String signed = SignTools.getSign(dataBase64);//获得签名
          DataTranfer dataTranfer = new DataTranfer();//封装到body的实体
          dataTranfer.setData(dataBase64);//将base64的加密串作为data
          dataTranfer.setSigned(signed);//设置签名
          dataTranfer.setMethod(method);//设置方法名
  
          String param = JSON.toJSONString(dataTranfer);
          return param;
      }
      public static String getParamFace (String dataBase64 , String method){
          String signed = SignTools.getSign(dataBase64);//获得签名
          DataTranfer dataTranfer = new DataTranfer();//封装到body的实体
          dataTranfer.setData(dataBase64);//将base64的加密串作为data
          dataTranfer.setSigned(signed);//设置签名
          dataTranfer.setMethod(method);//设置方法名
  
          String param = JSON.toJSONString(dataTranfer);
          return param;
      }
  }