在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;
}
}有没有更简单的方法?
发布于 2011-06-27 15:59:27
不,差不多就是这样。‘确实有点冗长,但并不是那么复杂。:-)
如果您正在使用Java而不仅仅是JDK,请参阅使用Java的UriBuilder的Talha Ahmed Khan's answer,它仍然是一行程序,但更优雅。这不是JDK的一部分,但是如果您正在做一个servlet或类似的(或者不介意包含必要的jar)...
发布于 2011-06-27 16:03:05
您也可以使用URIBuider
http://download.oracle.com/javaee/6/api/javax/ws/rs/core/UriBuilder.html
UriBuilder.fromURI(uri).port(port).build("foo", "bar");发布于 2017-08-24 13:35:49
从现有的URL对象创建新的URL对象似乎是一件简单的事情:
URL originalURL = new URL("http://octopus:345/squid.html");
URL newURL = new URL(originalURL.getProtocol(), originalUrl.getHost(), newPort, originalURL.getFile());https://stackoverflow.com/questions/6490014
复制相似问题