是否有 Java 包来处理构建 URL?

2022-09-02 04:29:41

我特别要寻找的是Java中的一些代码,这些代码将获取一个对象并将其转换为查询字符串,我可以将其附加到我返回的URL中。我确信有一个库可以做到这一点,甚至更多,但是我无法通过快速的Google搜索找到它。有人知道一个会这样做吗?Map


答案 1

我发现apache httpcomponents是一个可靠且通用的库,用于处理Java中的HTTP。但是,下面是一个示例类,它可能足以构建 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

尝试从Apache Http Compoments(HttpClient 4)尝试URIBuilder

它实际上不需要地图,但非常适合构建URI。