123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- package com.sooka.common.utils;
- import java.io.UnsupportedEncodingException;
- import java.net.URLEncoder;
- import java.security.MessageDigest;
- import java.security.NoSuchAlgorithmException;
- import java.util.ArrayList;
- import java.util.Collections;
- import java.util.Comparator;
- import java.util.Map;
- /**
- * Created by yanhongliang on 16/6/14.
- */
- public class Http {
- public interface SignParams {
- String signParams(String params);
- }
- static public void setOnSignParams(SignParams signParams) {
- onSignParams = signParams;
- }
- static private SignParams onSignParams;
- static public String stringFromParams(Map<String, Object> post) {
- StringBuilder buffer = new StringBuilder();
- if (post == null) return null;
- ArrayList<String> keys = new ArrayList<>(post.size());
- keys.addAll(post.keySet());
- Collections.sort(keys);
- // ArrayList<Map.Entry<String, Object>> params = new ArrayList<>(post.size());
- //
- // for (Map.Entry<String, Object> entry: post.entrySet()) {
- // params.add(entry);
- // }
- //
- // Collections.sort(params, new Comparator<Map.Entry<String, Object>>() {
- // @Override
- // public int compare(Map.Entry<String, Object> lhs, Map.Entry<String, Object> rhs) {
- //
- // System.out.println("-----lhs-----:=>"+lhs.getKey().hashCode());
- // System.out.println("-----rhs-----:=>"+rhs.getKey().hashCode());
- //
- // return lhs.getKey().hashCode() - rhs.getKey().hashCode();
- // }
- // });
- for (String key : keys) {
- Object value = post.get(key);
- if (buffer.length() > 0) buffer.append("&");
- buffer.append(key);
- buffer.append("=");
- try {
- buffer.append(URLEncoder.encode(String.valueOf(value), "UTF-8"));
- } catch (UnsupportedEncodingException e) {
- e.printStackTrace();
- }
- }
- String paramsString = new String(buffer);
- if (onSignParams != null) {
- paramsString = onSignParams.signParams(paramsString);
- }
- return paramsString;
- }
- public static String getMd5(String string) {
- byte[] hash;
- try {
- hash = MessageDigest.getInstance("MD5").digest(string.getBytes("UTF-8"));
- } catch (NoSuchAlgorithmException e) {
- throw new RuntimeException("Huh, MD5 should be supported?", e);
- } catch (UnsupportedEncodingException e) {
- throw new RuntimeException("Huh, UTF-8 should be supported?", e);
- }
- StringBuilder hex = new StringBuilder(hash.length * 2);
- for (byte b : hash) {
- if ((b & 0xFF) < 0x10) hex.append("0");
- hex.append(Integer.toHexString(b & 0xFF));
- }
- return hex.toString();
- }
- }
|