在Java中,URI
类是不可变的。
以下是我目前正在修改端口的方法:
public URI uriWithPort(URI uri, int port) {
try {
return new URI(uri.getScheme(), uri.getUserInfo(), uri.getHost(), port,
uri.getPath(), uri.getQuery(), uri.getFragment());
} catch (URISyntaxException e) {
LOG.error("Updating URI port failed:",e);
return uri;
}
}
有更简单的方法吗?
答案 0 :(得分:22)
您也可以使用URIBuider
http://download.oracle.com/javaee/6/api/javax/ws/rs/core/UriBuilder.html
UriBuilder.fromURI(uri).port(port).build("foo", "bar");
答案 1 :(得分:5)
不,这就是它。 '有点冗长,被授予,但 并不复杂。 : - )
如果您使用的是Java EE而不仅仅是JDK,请参阅使用Java EE Talha Ahmed Khan's answer的UriBuilder
,它仍然是单行但更优雅的。这不是JDK的一部分,但如果你正在做一个servlet或类似的(或者不介意包括必要的jar)......
答案 2 :(得分:0)
从现有的URL对象创建一个新的URL对象似乎很简单:
URL originalURL = new URL("http://octopus:345/squid.html");
URL newURL = newURL(originalURL.getProtocol(), originalUrl.getHost(), newPort, originalURL.getFile());
答案 3 :(得分:-1)
使用uri.resolve(URI)
怎么样?或者使用URI.create(URI)