如何从桌面应用程序调用公共IP到我们的Web服务

时间:2017-12-11 13:13:37

标签: java spring rest wildfly-10

我需要捕获调用我们api的系统的公共ip,该系统是一个桌面应用程序,它调用我们的rest api并且我使用以下代码

    @RequestMapping(value = "/api", method = RequestMethod.POST)
    public @ResponseBody JSON_Response sendMessage(@RequestBody Objectjson objjson,HttpServletRequest
            request) {

        LOG.debug("sending message via payless server");
        inputjson.setSentFrom("Message Sent From Api");
    //  inputjson.setHostip(""+request.getRemoteHost());
//I am using following to capture it
        LOG.debug("--------------------------"+request.getRemoteUser());
        LOG.debug("--------------------------"+request.getLocalAddr());
        LOG.debug("--------------------------"+request.getRemoteHost());
        LOG.debug("--------------------------"+request.getPathInfo());
        LOG.debug("--------------------------"+request.getPathTranslated());
        LOG.debug("--------------------------"+request.getRemoteUser());
        LOG.debug("--------------------------"+request.getRemoteUser());
        LOG.debug("--------------------------"+request.getRemoteUser());
        LOG.debug("--------------------------"+request.getRemoteUser());
        LOG.debug("--------------------------"+request.getRemoteUser());
        JSON_Response response = sendMessageInterface.processInput(inputjson);
        LOG.debug("sending response message " + response.getStatusDescription());

        return response;
    }

我在ip地址中获取自己的服务器ip。如果我从邮递员那里调用其余的api,我将获得正确的IP地址。

如果您找到任何其他方法来检索公共IP,请告诉我。

我正在使用Wildfly Server wildfly-10.1.0.Final

1 个答案:

答案 0 :(得分:1)

这是我用来获取远程用户IP地址的方法。希望它有所帮助

public HttpServletRequest getRequest() {
  RequestAttributes attribs = RequestContextHolder.getRequestAttributes();
  if (attribs instanceof ServletRequestAttributes) {
    HttpServletRequest request = ((ServletRequestAttributes)attribs).getRequest();
    return request;
  }
  return null;
}

public String getClientIp() {
  String remoteAddr = "";
  HttpServletRequest request = getRequest();
  if (request != null) {
    remoteAddr = request.getHeader("X-FORWARDED-FOR");
    if (remoteAddr == null || remoteAddr.trim().isEmpty()) {
      remoteAddr = request.getRemoteAddr();
    }
  }
  return remoteAddr;
}