Java - 替换 url 中的主机?

标签 java

在 java 中,我想用新的 Host 替换 url 的 Host 部分,其中主机和 url 都作为字符串提供。

这应该考虑主机可以有一个端口的事实,如defined in the RFC

例如,给定以下输入

我应该从正确执行此操作的函数中获得以下输出

有谁知道在 url 中正确执行 Host 替换的任何库或例程?

编辑:对于我的用例,我希望我的主机替换与 java servlet 的响应相匹配。我通过运行本地 Java Web 服务器来尝试这个,然后使用 curl -H 'Host:superduper.com:80' 'http://localhost:8000/testurl' 测试它端点简单地从 request.getRequestURL().toString() 返回 url,其中 request 是一个 HttpServletRequest。它返回了 http://superduper.com/testurl,所以它删除了 http 的默认端口,所以这也是我努力的方向。

最佳答案

Spring 框架提供了UriComponentsBuilder。你可以像这样使用它:

import org.springframework.web.util.UriComponentsBuilder;

String initialUri = "http://localhost/me/out?it=5";
UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(initialUri);
String modifiedUri = builder.host("myserver").port("20000").toUriString();
System.out.println(modifiedUri);
// ==> http://myserver:20000/me/out?it=5

在这里您需要在单独的调用中提供主机名和端口以获得正确的编码。

关于Java - 替换 url 中的主机?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46667342/

相关文章:

java - 打印一行点和另外两个代表答案的符号

java - 我正在尝试将扫描仪输入用于 for 循环,该循环计算从最小值到最大值的数字并在终端中显示数字

java - Eclipse 突然在以前工作的代码上给出解析器异常错误 - Android、Java

java - Android BroadcastReceiver 不工作(包括错误)

java - 如何使用 Java 和 Maven 将所有 swagger 文件打包成一个文件

java - 摄氏度始终为 0.0?

java - 在tomcat中保存应用程序状态

java - tomcat8启动时缺少jar文件

java - 即使 JPA 实体不脏,我也可以强制 spring-data 更新可审计字段吗?

Java JAAS 身份验证需要数据库端口号