Существует ли пакет Java для обработки URL-адресов? - PullRequest
20 голосов
/ 07 декабря 2009

Что мне особенно нужно, так это некоторый код на Java, который будет принимать объект Map и преобразовывать его в строку запроса, которую я могу добавить к возвращаемому URL-адресу. Я уверен, что есть библиотека, которая делает это и многое другое, но я не могу найти ее с помощью быстрого поиска в Google. Кто-нибудь знает, кто это сделает?

Ответы [ 3 ]

12 голосов
/ 07 декабря 2009

Я обнаружил, что 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"
6 голосов
/ 08 ноября 2012

Попробуйте URIBuilder из Apache Http Compoments (HttpClient 4).

На самом деле карта не берется, но хорошо подходит для создания URI.

1 голос
/ 07 декабря 2009

В сети , поэтому вы можете просто позвонить любому из:

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).

Он также предоставляет исходный код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...