docs: public static String mapJoin(Map<String, String> map,boolean keyLower,boolean valueUrlencode){
  		StringBuilder stringBuilder = new StringBuilder();
  		for(String key :map.keySet()){
  			if(map.get(key)!=null&&!"".equals(map.get(key))){
  				try {
  					String temp = (key.endsWith("_")&&key.length()>1)?key.substring(0,key.length()-1):key;
  					stringBuilder.append(keyLower?temp.toLowerCase():temp)
  								 .append("=")
  								 .append(valueUrlencode?URLEncoder.encode(map.get(key),"utf-8").replace("+", "%20"):map.get(key))
  								 .append("&");
  				} catch (UnsupportedEncodingException e) {
  					logger.error("", e);
  				}
  			}
  		}
  		if(stringBuilder.length()>0){
  			stringBuilder.deleteCharAt(stringBuilder.length()-1);
  		}
  		return stringBuilder.toString();
  	}