Add parameters stored in the Map to the uri string in Java
Description
The following code shows how to add parameters stored in the Map to the uri string.
Example
//from w w w .j a v a 2 s . c om
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
public class Main {
public static void main(String[] argv) {
Map<String, String> parameters = new HashMap<String, String>();
parameters.put("q", "java2s.com");
System.out.println(parameterize("http://abc.com", parameters));
}
/**
* Add parameters stored in the Map to the uri string. Map can contain
* Object values which will be converted to the string, or Object arrays,
* which will be treated as multivalue attributes.
*
* @param uri
* The uri to add parameters into
* @param parameters
* The map containing parameters to be added
* @return The uri with added parameters
*/
public static String parameterize(String uri, Map parameters) {
if (parameters.size() == 0) {
return uri;
}
StringBuffer buffer = new StringBuffer(uri);
if (uri.indexOf('?') == -1) {
buffer.append('?');
} else {
buffer.append('&');
}
for (Iterator i = parameters.entrySet().iterator(); i.hasNext();) {
Map.Entry entry = (Map.Entry) i.next();
if (entry.getValue().getClass().isArray()) {
Object[] value = (Object[]) entry.getValue();
for (int j = 0; j < value.length; j++) {
if (j > 0) {
buffer.append('&');
}
buffer.append(entry.getKey());
buffer.append('=');
buffer.append(value[j]);
}
} else {
buffer.append(entry.getKey());
buffer.append('=');
buffer.append(entry.getValue());
}
if (i.hasNext()) {
buffer.append('&');
}
}
return buffer.toString();
}
}
/*
*
* Derby - Class org.apache.derby.iapi.util.PropertyUtil
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with this
* work for additional information regarding copyright ownership. The ASF
* licenses this file to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
The code above generates the following result.