То, что я ищу специально, - это некоторый код на Java, который примет объект Map
и преобразует его в строку запроса, которую я могу добавить к URL-адресу, который я возвращаю. Я уверен, что есть библиотека, которая делает это и многое другое, но я не могу найти ее с помощью быстрого поиска Google. Кто-нибудь знает, кто это сделает?
Есть ли Java-пакет для обработки URL-адресов?
Ответ 1
Я нашел apache httpcomponents, чтобы быть прочной и универсальной библиотекой для работы с HTTP на Java. Однако здесь примерный класс, который может быть достаточным для построения строк URL-запроса:
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(), "utf-8") + "=" +
URLEncoder.encode(pairs.getValue(), "utf-8");
if (it.hasNext()) { query += "&"; }
}
}
public QueryString(Object name, Object value) {
query = URLEncoder.encode(name.toString(), "utf-8") + "=" +
URLEncoder.encode(value.toString(), "utf-8");
}
public QueryString() { query = ""; }
public synchronized void add(Object name, Object value) {
if (!query.trim().equals("")) query += "&";
query += URLEncoder.encode(name.toString(), "utf-8") + "=" +
URLEncoder.encode(value.toString(), "utf-8");
}
public String toString() { return query; }
}
Использование:
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"
Ответ 2
Попробуйте URIBuilder из Apache Http Compoments ( HttpClient 4).
Он фактически не берет карту, но хорошо подходит для создания URI.
Ответ 3
Здесь это в Интернете, поэтому вы можете просто вызвать любой из:
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).
Он также предоставляет исходный код.