赞
踩
1) 将表数据MD5签名
格式要求:json内嵌套json对象,需要组成字符串,json内嵌数组,不需要排序,直接参数=值1&值2...&值n,如key=1&id=2&secret=88eereff8
注意:
①使用replace(“”,””)函数来截取到对应格式。
②根据表数据封装成json的时候,要按表格里面字段顺序来依次封装到json对象中,作用:方便别人理解。
③为了使json数据按照ASCLL码顺序排序,建议使用fastjson,它会帮助我们自动排序,其依赖:
- <dependency>
- <groupId>com.alibaba</groupId>
- <artifactId>fastjson</artifactId>
- <version>1.1.23</version>
- </dependency>
如果使用net.sf.json,其依赖要添加<classifier>jdk15</classifier>,JSON.parseObject,是将Json字符串转化为相应的对象;JSON.toJSONString则是将对象转化为Json字符串。完整依赖如下:
- <dependency>
- <groupId>net.sf.json-lib</groupId>
- <artifactId>json-lib</artifactId>
- <version>2.4</version>
- <classifier>jdk15</classifier>
- </dependency>
- /**
- * 对字符串md5加密(小写+字母)
- * @param str 传入要加密的字符串
- * @return MD5加密后的字符串
- */
- public static String getMD5(String str) {
- String result = "";
- try {
- MessageDigest md = MessageDigest.getInstance("MD5");
- md.update(str.getBytes());
- byte b[] = md.digest();
- int i;
- StringBuffer buf = new StringBuffer("");
- for (int offset = 0; offset < b.length; offset++) {
- i = b[offset];
- if (i < 0)
- i += 256;
- if (i < 16)
- buf.append("0");
- buf.append(Integer.toHexString(i));
- }
- // 32 位:result = buf.toString();
- // 16 位
- result = buf.toString().substring(8, 24);
- } catch (NoSuchAlgorithmException e) {
- System.out.println(e);
- }
- return result;
-
- }
post请求的时候要把参数放在body里,如果把参数放在url后面拼接(<head/>里)相当于加了一个params,而放在body里面由key value对应传递参数
- /**
- * post请求
- * @param url
- * @param json
- * @return JSONObject
- */
- public static net.sf.json.JSONObject doPost(String url,JSONObject json){
- // 使用帮助类HttpClients创建CloseableHttpClient对象.
- CloseableHttpClient httpclient = HttpClients.createDefault();
- // HTTP请求类型创建HttpPost实例
- HttpPost post = new HttpPost(url);
- net.sf.json.JSONObject response = null;
- try {
- // 把json内容放到body里面
- StringEntity s = new StringEntity(json.toString());
- s.setContentEncoding("UTF-8");
- s.setContentType("application/json");
-
- // 对于POST请求,把请求体填充进HttpPost实体.
- post.setEntity(s);
- // 通过执行HttpPost请求获取CloseableHttpResponse实例 ,从CloseableHttpResponse实例中获取状态码,错误信息,以及响应页面等等.
- HttpResponse res = httpclient.execute(post);
- // int SC_OK = 200;
- if(res.getStatusLine().getStatusCode() == HttpStatus.SC_OK){
- // 通过HttpResponse接口的getEntity方法返回响应信息,并进行相应的处理
- HttpEntity entity = res.getEntity();
- // 返回json格式:
- String result = EntityUtils.toString(res.getEntity());
- response = net.sf.json.JSONObject.fromObject(result);
- }
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
- return response;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。