当前位置: 首页 > 知识库问答 >
问题:

如何从桌面应用程序调用到我们的网络服务获取公共IP

松英叡
2023-03-14

我需要捕获调用我们的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。如果我从postman调用rest api,我将获得正确的ip地址。

请让我知道,如果你找到任何其他方式检索公共ip。

我使用的是Wildfly服务器Wildfly-10.1.0。最终的

共有1个答案

岳英锐
2023-03-14

这是我用来获取远程用户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;
}
 类似资料:
  • 我正在使用NodeJS和Express。js来运行我的项目。在本地应用程序预览模式下,一切正常。但每次预览时提供的丑陋、长且临时的预览链接并不适合我,我希望有人能够通过以下方式访问我的服务器: 我在这里遵循了指南: AWS Cloud9应用程序预览指南 并将弹性IP分配并关联到运行Cloud9 IDE的EC2实例,我将入站安全规则设置如下: 运行Cloud9 IDE的EC2实例的安全组的入站规则

  • 我目前正在从事一个Java桌面应用程序项目。这是一个现有的应用程序,我被要求修改它。 他们说我必须使用RESTful Web服务将数据从桌面应用程序发送到Web应用程序。所以我搜索了一些关于RESTful Web服务的信息(因为我对那类东西不熟悉,对Java也不熟悉),我看到一些使用RESTful Web服务的非Web应用程序,但非Web应用程序是Maven项目。我需要修改的现有java桌面应用程

  • 问题内容: 我正在构建一个将从命令行调用的Spring Boot应用程序。我将一些参数传递给应用程序,但是在从此类中调用服务时遇到问题: 我正在尝试从内部调用方法,但出现错误: 问题答案: 您可以创建一个实现CommandLineRunner的类,并在应用启动后调用该类 您可以在这里获得更多信息

  • 下载应用程序、共享文件、查找字体和库存图片等 — 全部通过 Creative Cloud 桌面应用程序完成。 注意:  Typekit 现已更名为 Adobe Fonts,包含在 Creative Cloud 和其他订阅中。了解详情。 注意:在您安装 Creative Cloud 桌面应用程序的过程中,本文中介绍的某些选项卡可能不可用。 Adobe Creative Cloud 桌面应用程序可供您

  • 我对python和猎鹰都是新手。我开始开发一个RESTful API,到目前为止falcon非常适合它。提供静态网页还有其他一些要求,我不想为此编写应用程序或生成服务器。 是否可以从falcon应用程序提供静态网页?

  • 在学习这本书的过程中,你已经掌握了很多关于 Git 的命令。虽然这些是在学习过程中不可缺少的,但是版本控制的核心并不是让你学习所有的命令和参数。 当你掌握一些基本的概念,再加上一个带有用户图形界面的应用程序的帮助,就可以让你的日常工作变得更加简单。一个最大的好处就是它会为你提供了一个可视化的用户操作界面。 在桌面应用程序中,很多任务使用起来会更加容易和更方便。并且你也不需要记住那几十个繁琐的 Gi