What I'm looking for specifically is some code in Java that will take a Map
object and convert it into a query string that I can append to a URL I return. I'm sure there's a library that does this and much more, but I can't find it with a quick Google search. Anyone know of one that will do this?
views:
170answers:
2
+1
A:
There's this online, so you can simply call any of:
InputStream serverInput = post(URL url, Map parameters);
InputStream serverInput = post(URL url, Map parameters);
InputStream serverInput = post(URL url, Map cookies, Map parameters);
InputStream serverInput = post(URL url, String[] cookies, Object[] parameters);
InputStream serverInput = post(URL url, Object[] parameters).
He provides the source code too.
Milan Ramaiya
2009-12-07 17:55:56
+3
A:
I found apache httpcomponents to be a solid and versatile library for dealing with HTTP in Java. However, here's a sample class, which might suffice for building URL query strings:
import java.net.URLEncoder;
public class QueryString {
private String query = "";
public QueryString(HashMap<String, String> map) {
Iterator it = mp.entrySet().iterator();
while (it.hasNext()) {
Map.Entry pairs = (Map.Entry)it.next();
query += URLEncoder.encode(pairs.getKey()) + "=" +
URLEncoder.encode(pairs.getValue());
if (it.hasNext()) { query += "&"; }
}
}
public QueryString(Object name, Object value) {
query = URLEncoder.encode(name.toString()) + "=" +
URLEncoder.encode(value.toString());
}
public QueryString() { query = ""; }
public synchronized void add(Object name, Object value) {
if (!query.trim().equals("")) query += "&";
query += URLEncoder.encode(name.toString()) + "=" +
URLEncoder.encode(value.toString());
}
public String toString() { return query; }
}
Usage:
HashMap<String, String> map = new HashMap<String, String>();
map.put("hello", "world");
map.put("lang", "en");
QueryString q = new QueryString(map);
System.out.println(q);
// => "hello=world&lang=en"
The MYYN
2009-12-07 18:01:32
Looks good! However, I strongly recommend that you use generics in your code!
notnoop
2009-12-07 18:44:12
I'm going to accept this, but yah the <code>URLEncoder.encode(String s)</code> method is deprecated in favor of one that takes a format argument as well. Other than that, this is great, thanks.
Bialecki
2009-12-08 01:27:36