短url生成类

简介: ShortUrl.java /** * Project Name:report * File Name:ShortUrl.java * Package Name:com.riambsoft.report.

ShortUrl.java


/** * Project Name:report * File Name:ShortUrl.java * Package Name:com.riambsoft.report.util * Date:2013-3-12上午11:16:53 * Copyright (c) 2013, riambsoft All Rights Reserved. * */  package com.riambsoft.report.util;  import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;  import com.itextpdf.text.log.SysoLogger;  /** * ClassName:ShortUrl <br/> Function: TODO ADD FUNCTION. <br/> Reason: TODO ADD REASON. <br/> Date: 2013-3-12 上午11:16:53 <br/> *  * @author Administrator * @version * @since JDK 1.5 * @see */public class ShortUrl {      public static void main(String[] args) throws MalformedURLException {        String url = "http://localhost:8080/report/outPdf?docNo=inv4200_p&progCode=inv4200_p&criDesc=-+2013%2F03+%E5%B8%90%E7%B0%BF&sourceflag=&isLocal=false&rs10ucode=adnin&querySql=++company_code%3D%2700%27+and++warehouse_code+in++%28select+warehouse_code+from+inv_user_def++where+company_code%3D%2700%27+and+user_unique_no%3D%2700382%27%29+and+exists%28select+item_code+from+inv_master+where+inv_master.company_code+%3D+inv_book_master.company_code+and+inv_master.item_code+%3D+inv_book_master.item_code%29++order+by++warehouse_code%2C+item_code&companyCode=00&sessionCode=388CEF0500AE4006ADE8E052C227BC70";        for (String string : ShortText(url)) {            print(string);        }    }      public static String[] ShortText(String string) {        String key = "XuLiang"; // 自定义生成MD5加密字符串前的混合KEY        String[] chars = new String[] { // 要使用生成URL的字符        "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" };          String hex = Encript.md5(key + string);        int hexLen = hex.length();        int subHexLen = hexLen / 8;        String[] ShortStr = new String[4];          for (int i = 0; i < subHexLen; i++) {            String outChars = "";            int j = i + 1;            String subHex = hex.substring(i * 8, j * 8);            long idx = Long.valueOf("3FFFFFFF", 16) & Long.valueOf(subHex, 16);              for (int k = 0; k < 6; k++) {                int index = (int) (Long.valueOf("0000003D", 16) & idx);                outChars += chars[index];                idx = idx >> 5;            }            ShortStr[i] = outChars;        }          return ShortStr;    }      public static URL ExpandUrl(URL shortUrl) {        URL longUrl = null;        try {            HttpURLConnection req = (HttpURLConnection) shortUrl                    .openConnection();            req.setInstanceFollowRedirects(false);            req.connect();            if ((req.getResponseCode() == req.HTTP_MOVED_TEMP)||(req.getResponseCode()==req.HTTP_MOVED_PERM)) {                longUrl = new URL(req.getHeaderField("Location"));            }        } catch (Exception e) {            longUrl = null;        }        return longUrl;      }          private static void print(String messagr) throws MalformedURLException {        System.out.println(ExpandUrl(new URL("http://nutz.cn/1L")));         System.out.println(messagr);    }  }



Encript.java


/** * Project Name:report * File Name:ShortUrlUtil.java * Package Name:com.riambsoft.report.util * Date:2013-3-12上午11:07:16 * Copyright (c) 2013, riambsoft All Rights Reserved. * */  package com.riambsoft.report.util;  import java.security.MessageDigest;  /** * ClassName:ShortUrlUtil <br/> Function: TODO ADD FUNCTION. <br/> Reason: TODO ADD REASON. <br/> Date: 2013-3-12 上午11:07:16 <br/> *  * @author Administrator * @version * @since JDK 1.5 * @see */public class Encript {      // 十六进制下数字到字符的映射数组    private final static String[] hexDigits = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F" };      /** 把inputString加密 */    public static String md5(String inputStr) {        return encodeByMD5(inputStr);    }      /**     * 验证输入的密码是否正确     *      * @param password     *            真正的密码(加密后的真密码)     * @param inputString     *            输入的字符串     * @return 验证结果,boolean类型     */    public static boolean authenticatePassword(String password, String inputString) {        if (password.equals(encodeByMD5(inputString))) {            return true;        } else {            return false;        }    }      /** 对字符串进行MD5编码 */    private static String encodeByMD5(String originString) {        if (originString != null) {            try {                // 创建具有指定算法名称的信息摘要                MessageDigest md5 = MessageDigest.getInstance("MD5");                // 使用指定的字节数组对摘要进行最后更新,然后完成摘要计算                byte[] results = md5.digest(originString.getBytes());                // 将得到的字节数组变成字符串返回                String result = byteArrayToHexString(results);                return result;            } catch (Exception e) {                e.printStackTrace();            }        }        return null;    }      /**     * 轮换字节数组为十六进制字符串     *      * @param b     *            字节数组     * @return 十六进制字符串     */    private static String byteArrayToHexString(byte[] b) {        StringBuffer resultSb = new StringBuffer();        for (int i = 0; i < b.length; i++) {            resultSb.append(byteToHexString(b[i]));        }        return resultSb.toString();    }      // 将一个字节转化成十六进制形式的字符串    private static String byteToHexString(byte b) {        int n = b;        if (n < 0)            n = 256 + n;        int d1 = n / 16;        int d2 = n % 16;        return hexDigits[d1] + hexDigits[d2];    }      /**     * main:(这里用一句话描述这个方法的作用). <br/>     *      * @param args     * @since JDK 1.5     */    public static void main(String[] args) {          // TODO Auto-generated method stub      }  }


短url还原工具类


public static URL ExpandUrl(URL shortUrl) {        URL longUrl = null;        try {            HttpURLConnection req = (HttpURLConnection) shortUrl                    .openConnection();            req.setInstanceFollowRedirects(false);            req.connect();            if ((req.getResponseCode() == req.HTTP_MOVED_TEMP)||(req.getResponseCode()==req.HTTP_MOVED_PERM)) {                longUrl = new URL(req.getHeaderField("Location"));            }        } catch (Exception e) {            longUrl = null;        }        return longUrl;       }


目录
相关文章
|
11月前
|
JSON 数据格式 Python
django drf 案例--实现url编码和json和dict格式转化小工具(涉及定义模型类,序列化器,类视图,路由),接口测试
django drf 案例--实现url编码和json和dict格式转化小工具(涉及定义模型类,序列化器,类视图,路由),接口测试
|
算法 安全 编译器
第十三章 CSP 中的 HTTP 请求 - CSP 服务器 URL 和类名称解析
第十三章 CSP 中的 HTTP 请求 - CSP 服务器 URL 和类名称解析
|
网络协议 Java 物联网
Java网络编程之InetAddress类详解,URL和URI的区别,URLDecoder和URLEncoder,IPv6和IPv4区别,IPv6的三种表示方法
Java网络编程之InetAddress类详解,URL和URI的区别,URLDecoder和URLEncoder,IPv6和IPv4区别,IPv6的三种表示方法
250 1
SpringMVC RequestMapping注解类&#183;Ant和占位符URL
RequestMapping注解类 一、RequestMapping注解类的使用方法 •开发Controller控制器类,使用@Controller注解标注,并在配置文件中用扫描 •在Controller控制器类的类定义和方法定义处都可以标注@RequestMapping注解 •...
Owin的URL编码怎么搞?以前都是HttpUtility.UrlEncode之类的,现在连system.web都没了,肿么办?
Owin的URL编码怎么搞?以前都是HttpUtility.UrlEncode之类的,现在连system.web都没了,肿么办? 编码: Uri.EscapeDataString(name) 解码: Uri.UnescapeDataString(name) 作者:毒逆天 出处:https://www.cnblogs.com/dotnetcrazy 打赏:18i4JpL6g54yAPAefdtgqwRrZ43YJwAV5z 本文版权归作者和博客园共有。
617 0
|
Java 程序员
java之URL类
Java的网络类可以让你通过网络或者远程连接来实现应用。而且,这个平台现在已经可 以对国际互联网以及URL资源进行访问了。Java的URL类可以让访问网络资源就像是访问你本地的文件夹一样方便快捷。我们通过使用Java的URL类 就可以经由URL完成读取和修改数据的操作。
904 0