Java中HTTP和HTTPS默认端口号常量

3
通常Java附带一组可用的合理常量。作为IANA分配的HTTP和HTTPS默认端口号(80和443)是合理的常量。我查看了java.net.URL、java.net.HttpURLConnection和javax.net.ssl.HttpsURLConnection的javadoc,但没找到它们。这些常量在JavaSE中是否存在?如果不存在,Web应用程序(例如org.apache.catalina或coyote)中的类中是否有它们可用?只因为我不喜欢我的代码中有魔法数字...
我需要通过URL组合来实现吗?
if(port != new URL("http://example.com/").getDefaultPort() &&
        port != new URL("https://example.com/").getDefaultPort()){
    stringBuilder.append(":");
    stringBuilder.append(port);
}

我认为Java中没有定义端口号的标准常量。请参见:https://dev59.com/2GvXa4cB1Zd3GeqPGCXo - Bryan Abrams
每次只需插入端口号即可。 - fge
2
此外,不要使用 StringBuilder 来构建 URL,而应该使用 URI 类。它可以为您执行编码工作。它有许多构造函数,包括一个带有主机/端口号的构造函数。 - fge
在HTTP(S)端口的情况下,我认为没有人会对魔数有问题。将它们声明为常量,我看不出有什么问题。这些数字不会在互联网重建之前改变。 - f1sh
@fge:感谢提供URI。虽然还不是很好,但确实好了很多:String url = new URI(port == 443 ? "https" : "http", null, host, (port == 80 || port == 443) ? -1 : port, (path != null && path.length() > 0) ? path : "/", null, null).toString(); - Matthias Ronge
1个回答

5

无法在经过大量重构的版本4中找到它们。 - Thilo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接