将 URI 转换为仅包含主机、端口和路径的字符串

Convert URI to String taking only host, port and path

我有 java.net.URI 类型的对象,我想将其转换为 String 表示,但我只对以下组件感兴趣:

我不想要任何其他元素,例如查询、片段、用户信息或方案。

getHost()getPort()getPath() 手动完成它看起来是一个脆弱的解决方案。是否有 URI 格式化程序或自定义 toString 可用?

这里的脆弱是指可能存在一些我可能忘记手动处理的极端情况。像例如主机是 IPv6 地址然后它 needs to have brackets.

的情况

您可以很容易地构建一个新的 URI:

URI partial = new URI(
    null, // scheme
    null, // user info
    uri.getHost(),
    uri.getPort(),
    uri.getPath(),
    null, // query
    null); // fragment
String text = partial.toString();

您可能想要验证主机是 non-null 以使其合理。

或者,串联方法不太可能复杂得多 - 我假设您将有单元测试来检查所有组合,无论实现如何。