Http.java 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. package com.sooka.common.utils;
  2. import java.io.UnsupportedEncodingException;
  3. import java.net.URLEncoder;
  4. import java.security.MessageDigest;
  5. import java.security.NoSuchAlgorithmException;
  6. import java.util.ArrayList;
  7. import java.util.Collections;
  8. import java.util.Comparator;
  9. import java.util.Map;
  10. /**
  11. * Created by yanhongliang on 16/6/14.
  12. */
  13. public class Http {
  14. public interface SignParams {
  15. String signParams(String params);
  16. }
  17. static public void setOnSignParams(SignParams signParams) {
  18. onSignParams = signParams;
  19. }
  20. static private SignParams onSignParams;
  21. static public String stringFromParams(Map<String, Object> post) {
  22. StringBuilder buffer = new StringBuilder();
  23. if (post == null) return null;
  24. ArrayList<String> keys = new ArrayList<>(post.size());
  25. keys.addAll(post.keySet());
  26. Collections.sort(keys);
  27. // ArrayList<Map.Entry<String, Object>> params = new ArrayList<>(post.size());
  28. //
  29. // for (Map.Entry<String, Object> entry: post.entrySet()) {
  30. // params.add(entry);
  31. // }
  32. //
  33. // Collections.sort(params, new Comparator<Map.Entry<String, Object>>() {
  34. // @Override
  35. // public int compare(Map.Entry<String, Object> lhs, Map.Entry<String, Object> rhs) {
  36. //
  37. // System.out.println("-----lhs-----:=>"+lhs.getKey().hashCode());
  38. // System.out.println("-----rhs-----:=>"+rhs.getKey().hashCode());
  39. //
  40. // return lhs.getKey().hashCode() - rhs.getKey().hashCode();
  41. // }
  42. // });
  43. for (String key : keys) {
  44. Object value = post.get(key);
  45. if (buffer.length() > 0) buffer.append("&");
  46. buffer.append(key);
  47. buffer.append("=");
  48. try {
  49. buffer.append(URLEncoder.encode(String.valueOf(value), "UTF-8"));
  50. } catch (UnsupportedEncodingException e) {
  51. e.printStackTrace();
  52. }
  53. }
  54. String paramsString = new String(buffer);
  55. if (onSignParams != null) {
  56. paramsString = onSignParams.signParams(paramsString);
  57. }
  58. return paramsString;
  59. }
  60. public static String getMd5(String string) {
  61. byte[] hash;
  62. try {
  63. hash = MessageDigest.getInstance("MD5").digest(string.getBytes("UTF-8"));
  64. } catch (NoSuchAlgorithmException e) {
  65. throw new RuntimeException("Huh, MD5 should be supported?", e);
  66. } catch (UnsupportedEncodingException e) {
  67. throw new RuntimeException("Huh, UTF-8 should be supported?", e);
  68. }
  69. StringBuilder hex = new StringBuilder(hash.length * 2);
  70. for (byte b : hash) {
  71. if ((b & 0xFF) < 0x10) hex.append("0");
  72. hex.append(Integer.toHexString(b & 0xFF));
  73. }
  74. return hex.toString();
  75. }
  76. }