修改URI的端口

时间:2011-06-27 07:53:36

标签: java

在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;
    }
}

有更简单的方法吗?

4 个答案:

答案 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 answerUriBuilder,它仍然是单行但更优雅的。这不是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)