当前位置: 首页 > 面试题库 >

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

司徒寒
2023-03-14
问题内容

我正在寻找的是Java中的一些代码,这些代码将接收一个Map对象并将其转换为查询字符串,然后可以将其附加到返回的URL中。我敢肯定有一个图书馆可以做到这一点,还有更多,但是我无法通过快速的Google搜索找到它。有人知道会这样做吗?


问题答案:

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


 类似资料:
  • 存在可以强制构建仅在特定JDK版本上运行的maven强制执行器插件。 我想知道有没有什么实际的理由?我们已经构建了配置来指定源和目标版本。据我所知,这已经足够了,因为Java是向后兼容的。例如,它在gradle中的外观: maven就是这样的: 如果你看到任何需要jdk确切版本的理由,请你也写下来。 UPD。问题更多的是,编译版本8的java源/目标项目和JDK的8、9、10或11是否有任何实际差

  • 问题内容: 如果我在.NET中没有记错的话,可以为未处理的异常注册“全局”处理程序。我想知道Java是否有类似的东西。 问题答案: 是的,有,但只有在没有设置时才会触发。

  • 问题内容: 我正在阅读面向对象的Javascript,并发现了闭包的概念。我不太明白为什么以及何时使用它。其他语言(例如Java)也有闭包吗?我基本上想了解了解闭包的概念如何帮助我改善编码。 问题答案: 闭包是具有绑定变量的第一类函数。 大致意味着: 您可以将闭包作为参数传递给其他函数 闭包存储创建时存在的词法作用域中某些变量的值 Java最初没有对闭包的语法支持(Java 8中引入了闭包),尽管

  • 在空手道中,我希望有一个模式变量,它是响应数据的超集,这样我就可以用相同的模式测试多个请求。 这对于GraphQL应该特别有用,因为请求本身定义了返回的字段。 预期模式: 回答数据: 在本例中,响应返回的所有键。数据应该在架构中,但架构中的任何键都不在响应中。数据应该被忽略。 在空手道中有没有办法做到这一点,或者有没有计划在将来增加这一功能? 编辑:更新了示例,因为唯一遗漏的属性是一个可为空的属性

  • 问题内容: Java是否有析构函数?我似乎找不到关于此的任何文档。如果没有,我怎么能达到同样的效果? 为了使我的问题更具体,我正在编写一个处理数据的应用程序,规范中说应该有一个“重置”按钮,以将应用程序恢复为最初的启动状态。但是,除非关闭应用程序或按下重置按钮,否则所有数据都必须是“实时”的。 作为通常的C / C ++程序员,我认为这将是微不足道的。(因此,我计划最后实现它。)我对程序进行了结构

  • 问题内容: 我知道,现在大多数处理器都有两个或多个内核,因此多核编程非常流行。有在Java中利用此功能的功能吗?我知道Java有一个Thread类,但是我也知道这是在多核流行之前的很长时间了。如果我可以使用Java中的多个内核,我将使用什么类/技术? 问题答案: Java是否支持多核处理器/并行处理? 是。它还是其他编程语言的平台,在该平台上,实现增加了“真正的多线程”或“真正的线程”卖点。在较新