有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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


共 (3) 个答案

  1. # 1 楼答案

    网上有this,所以你可以简单地调用以下任何一个:

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

    他也提供了源代码

  2. # 3 楼答案

    我发现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"