获取服务器地址的实际名称和路径

时间:2017-12-28 04:55:05

标签: apache http

我试图通过使用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或任何正确的服务器地址名称或路径。?

2 个答案:

答案 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的协议,服务器名称,端口号和服务器路径。