通常Java附带一组可用的合理常量。作为IANA分配的HTTP和HTTPS默认端口号(80和443)是合理的常量。我查看了java.net.URL、java.net.HttpURLConnection和javax.net.ssl.HttpsURLConnection的javadoc,但没找到它们。这些常量在JavaSE中是否存在?如果不存在,Web应用程序(例如org.apache.catalina或coyote)中的类中是否有它们可用?只因为我不喜欢我的代码中有魔法数字...
我需要通过URL组合来实现吗?
我需要通过URL组合来实现吗?
if(port != new URL("http://example.com/").getDefaultPort() &&
port != new URL("https://example.com/").getDefaultPort()){
stringBuilder.append(":");
stringBuilder.append(port);
}
StringBuilder
来构建 URL,而应该使用URI
类。它可以为您执行编码工作。它有许多构造函数,包括一个带有主机/端口号的构造函数。 - fgeURI
。虽然还不是很好,但确实好了很多: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