All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.jnoee.xo.utils.UrlUtils Maven / Gradle / Ivy

The newest version!
package com.github.jnoee.xo.utils;

import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;

import com.github.jnoee.xo.constant.Encoding;
import com.github.jnoee.xo.exception.SysException;

/**
 * URL工具类。
 */
public class UrlUtils {
  /**
   * 对URL进行编码。
   * 
   * @param url URL地址
   * @return 返回编码后的URL。
   */
  public static String encode(String url) {
    return encode(url, Encoding.UTF8);
  }

  /**
   * 对URL进行编码。
   * 
   * @param url URL地址
   * @param enc 编码格式
   * @return 返回编码后的URL。
   */
  public static String encode(String url, String enc) {
    try {
      return URLEncoder.encode(url, enc);
    } catch (UnsupportedEncodingException e) {
      throw new SysException("对URL进行编码时发生异常。", e);
    }
  }

  /**
   * 对URL进行解码。
   * 
   * @param url URL地址
   * @return 返回解码的URL。
   */
  public static String decode(String url) {
    return decode(url, Encoding.UTF8);
  }

  /**
   * 对URL进行解码。
   * 
   * @param url URL地址
   * @param enc 编码格式
   * @return 返回解码的URL。
   */
  public static String decode(String url, String enc) {
    try {
      return URLDecoder.decode(url, enc);
    } catch (UnsupportedEncodingException e) {
      throw new SysException("对URL进行解码时发生异常。", e);
    }
  }

  /**
   * 生成请求参数字符串。
   * 
   * @param params 请求参数
   * @return 返回请求参数字符串。
   */
  public static String genParamsStr(Map params) {
    String paramsStr = "";
    if (CollectionUtils.isNotEmpty(params)) {
      List datas = new ArrayList<>();
      for (Entry param : params.entrySet()) {
        datas.add(param.getKey() + "=" + param.getValue());
      }
      paramsStr = StringUtils.join(datas, "&");
    }
    return paramsStr;
  }

  /**
   * 生成请求参数字符串。
   * 
   * @param params 请求参数
   * @param enc 编码格式
   * @return 返回请求参数字符串。
   */
  public static String genParamsStr(Map params, String enc) {
    Map encodeParams = new LinkedHashMap<>();
    for (Entry param : params.entrySet()) {
      encodeParams.put(param.getKey(), encode(param.getValue(), enc));
    }
    return genParamsStr(encodeParams);
  }

  /**
   * 私有构造方法。
   */
  private UrlUtils() {}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy