// // The code in the next two methods is based on the code in HttpUtils.java // from // javax.servlet.http. HttpUtils is deprecated - so I updated the methods to // be a bit smarter // and use Map instead of Hashtable // public static Map parseQueryString(final String s) { String[] valArray = null; if (s == null) { throw new IllegalArgumentException(); } Map<String, String[]> rtn = new HashMap<String, String[]>(); StringBuffer sb = new StringBuffer(); String key; for (StringTokenizer st = new StringTokenizer(s, "&"); st.hasMoreTokens(); rtn.put(key, valArray)) { // $NON-NLS-1$ String pair = st.nextToken(); int pos = pair.indexOf('='); if (pos == -1) { throw new IllegalArgumentException(); } key = HttpUtil.parseName(pair.substring(0, pos), sb); String val = HttpUtil.parseName(pair.substring(pos + 1, pair.length()), sb); if (rtn.containsKey(key)) { String[] oldVals = rtn.get(key); valArray = new String[oldVals.length + 1]; System.arraycopy(oldVals, 0, valArray, 0, oldVals.length); valArray[oldVals.length] = val; } else { valArray = new String[1]; valArray[0] = val; } } return rtn; }