123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160 |
- package cn.com.qmth.examcloud.commons.util;
- import java.io.UnsupportedEncodingException;
- import java.net.URLDecoder;
- import java.net.URLEncoder;
- import java.util.HashMap;
- import java.util.Map;
- import java.util.Map.Entry;
- /**
- * url 处理工具
- *
- * @author WANGWEI
- */
- public class UrlUtil {
- /**
- * 获取url参数
- *
- * @author WANG WEI
- *
- * @param str
- * @return
- */
- public static Map<String, String> getUrlParams(String url) {
- Map<String, String> params = new HashMap<String, String>();
- try {
- int indexOf = url.lastIndexOf('?');
- if (0 < indexOf) {
- url = url.substring(indexOf + 1);
- }
- String[] pairs = url.trim().split("&");
- for (String pair : pairs) {
- String[] kv = pair.split("=");
- if (2 != kv.length) {
- continue;
- }
- params.put(kv[0], URLDecoder.decode(kv[1], "UTF-8"));
- }
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
- return params;
- }
- /**
- * 编码
- *
- * @author WANGWEI
- * @param s
- * @return
- */
- public static String encode(String s) {
- return encode(s, "UTF-8");
- }
- /**
- * 编码
- *
- * @author WANGWEI
- * @param s
- * @param enc
- * @return
- */
- public static String encode(String s, String enc) {
- try {
- return URLEncoder.encode(s, enc).replaceAll("\\+", "%20");
- } catch (UnsupportedEncodingException e) {
- throw new RuntimeException(e);
- }
- }
- /**
- * 解码
- *
- * @author WANGWEI
- * @param s
- * @return
- */
- public static String decode(String s) {
- return decode(s, "UTF-8");
- }
- /**
- * 解码
- *
- * @author WANGWEI
- * @param s
- * @param enc
- * @return
- */
- public static String decode(String s, String enc) {
- try {
- return URLDecoder.decode(s, enc);
- } catch (UnsupportedEncodingException e) {
- throw new RuntimeException(e);
- }
- }
- /**
- * url拼接参数
- *
- * @author WANGWEI
- * @param url
- * @param params
- * @return
- */
- public static String joinParams(String url, Map<String, String> params) {
- Map<String, String> urlParams = getUrlParams(url);
- urlParams.putAll(params);
- int indexOf = url.lastIndexOf('?');
- if (0 < indexOf) {
- url = url.substring(0, indexOf);
- }
- StringBuilder sb = new StringBuilder();
- sb.append(url).append("?");
- boolean hasParams = false;
- for (Entry<String, String> entry : urlParams.entrySet()) {
- sb.append(entry.getKey()).append("=").append(encode(entry.getValue())).append("&");
- hasParams = true;
- }
- if (hasParams) {
- sb.deleteCharAt(sb.length() - 1);
- }
- return sb.toString();
- }
- /**
- * 拼接url片段
- *
- * @author WANGWEI
- * @param fragments
- * @return
- */
- public static String joinUrl(String... fragments) {
- StringBuilder sb = new StringBuilder();
- for (int i = 0; i < fragments.length; i++) {
- String cur = fragments[i].trim();
- if (cur.endsWith("/")) {
- cur = cur.substring(0, cur.length() - 1);
- }
- if (0 == i) {
- sb.append(cur);
- } else if (cur.startsWith("/")) {
- sb.append(cur);
- } else {
- sb.append("/").append(cur);
- }
- }
- return sb.toString();
- }
- }
|