@@ -0,0 +1,1591 @@
+import java.net.URLDecoder;%0Aimport java.net.URLEncoder;%0A%0Aimport java.util.HashMap;%0Aimport java.util.Map;%0A%0A%0Apublic class QueryStringBuilder %7B%0A    private Map%3CString, String%3E parameters = new HashMap%3CString, String%3E();%0A    %0A    public QueryStringBuilder() %7B%0A    %7D%0A    %0A    public QueryStringBuilder(String queryString) %7B%0A        %0A        if(queryString == null %7C%7C queryString.trim().length() == 0) %7B%0A            return;%0A        %7D%0A        %0A        String %5B%5D params = queryString.split(%22%5B&;%5D%22);%0A        for(String p : params) %7B%0A            String %5B%5D parts = p.split(%22=%22);%0A            if(parts.length == 2) %7B%0A                parameters.put(parts%5B0%5D, URLDecoder.decode(parts%5B1%5D));%0A            %7D%0A        %7D        %0A    %7D%0A    %0A    public void put(String key, Object value) %7B%0A        parameters.put(key, value == null ? null : value.toString());%0A    %7D%0A    %0A    public void remove(String key) %7B%0A        parameters.remove(key);%0A    %7D%0A%0A    public String get(String key) %7B%0A        return parameters.get(key);%0A    %7D%0A    %0A    public boolean contains(String key) %7B%0A        return parameters.containsKey(key);%0A    %7D%0A    %0A    public String toString() %7B%0A        StringBuilder sb = new StringBuilder();%0A        for(String key : parameters.keySet()) %7B%0A            String value = parameters.get(key);%0A            if(value != null && value.trim().length() %3E 0) %7B%0A                if(sb.length() %3E 0) %7B%0A                    sb.append(%22&%22);%0A                %7D%0A                sb.append(key).append(%22=%22).append(value == null ? %22%22 : URLEncoder.encode(value));%0A            %7D%0A        %7D%0A        return sb.toString();%0A    %7D%0A%7D%0A

Create QueryStringBuilder.java