我试图通过使用HttpServletRequest获取实际的服务器地址。问题是如果我使用这样的代码
String hostdonate = request.getScheme() + "://" +
request.getHeader("host") +
request.getContextPath()+"/getDonationDetails"
它将返回http://localhost:8084/Test/getDonationDetails.Here Test是项目名称。这适用于我的计算机中的localhost。现在我想将我的应用程序部署到服务器地址33.124.165.12。现在如果我使用相同的代码它返回类似http://localhost:8080/getDonationDetails.Here的东西getDonationDetails是我想要在返回地址后执行的方法。它重定向到空白页面,错误"网站无法访问"。如何获取实际地址我的服务器如33.124.165.12/getDonationDetails或任何正确的服务器地址名称或路径。?
答案 0 :(得分:0)
你可以使用这样的东西:
public String getInetAddress() {
Enumeration<NetworkInterface> e = null;
String address = null;
try {
e = NetworkInterface.getNetworkInterfaces();
} catch (SocketException e1) {
LOGGER.info("Error in : " + e1);
e1.printStackTrace();
}
while (e.hasMoreElements()) {
NetworkInterface n = (NetworkInterface) e.nextElement();
if ("eth0".equalsIgnoreCase(n.getName())) {
Enumeration<InetAddress> ee = n.getInetAddresses();
while (ee.hasMoreElements()) {
InetAddress i = (InetAddress) ee.nextElement();
address = i.getHostAddress();
}
}
}
return address;
}
这将返回现有服务器的私有IP。
答案 1 :(得分:0)
尝试使用getRequestURL()
的{{1}}。它将返回您应该能够从中检索服务器IP的协议,服务器名称,端口号和服务器路径。