public static HashMap<String,String> parseKeyValue(String msg){    	
    	if(isBlank(msg)){
            return null;
        }
    	
    	String values = null;
        try{
        	values = URLDecoder.decode(msg, CoderUtils.UTF8);
        }catch(UnsupportedEncodingException e){
            throw new UnsupportedCharsetException(CoderUtils.UTF8);
        }
        
        HashMap<String,String> requestData = new HashMap<String,String>();
        int pathEndPos = values.indexOf('?');
        if (pathEndPos >= 0){
            requestData.put(HttpConstants.REQUEST, values.substring(0, pathEndPos));
        }
        
        System.out.println(values + "  : " + requestData.get(HttpConstants.REQUEST));
        
        Matcher m = PARAM_PATTERN.matcher(values.substring(pathEndPos + 1));
        int pos = 0;
        while (m.find(pos)) {
            pos = m.end();            
            requestData.put(m.group(1), m.group(2)); 
        }
        
        return requestData;
    }