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

Spring集成:int-http:带有url路径变量的入站网关

张和颂
2023-03-14

我正在尝试使用Spring Integration int-http:inbound-gateway测试Inbound http gatway:

<int-http:inbound-gateway id="correlateOutgoingMessage"
    supported-methods="POST" request-channel="toOutCorrelator"
    reply-channel="fromOutCorrelator" view-name="/correlateOutgoingMessage"
    path="/correlateOut/{origin}/{msgtype}/{priority}"
    reply-timeout="50000">
    <int-http:header name="origin" expression="#pathVariables.origin" />
    <int-http:header name="msgtype" expression="#pathVariables.msgtype" />
    <int-http:header name="priority" expression="#pathVariables.priority" />
</int-http:inbound-gateway>

我的Web.xml:

<servlet>
    <servlet-name>correlateOut</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>WEB-INF/intg-schema.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>correlateOut</servlet-name>
    <!-- controler/* -->
    <url-pattern>/correlateOut/*</url-pattern>
</servlet-mapping>

使用RestTemplate,我试图向网关发出POST请求:

那个

uri =  "http://localhost:8080/test/correlateOutgoingMessage/{origin}/{msgtype}/{priority}"

    String origin = "xxxx";
    Integer msgtype = 2333;
    Integer priority = 2;

    HttpHeaders headers = new HttpHeaders();
    headers.setContentType(MediaType.TEXT_PLAIN);

    HttpEntity<?> request = null;

    ResponseEntity<String> httpResponse = null;

    request = new HttpEntity<Object>(messageContent);


    httpResponse = template.exchange(uri, HttpMethod.POST, request,
            String.class, getUrlParams(origin, msgtype, priority));

我总是得到没有找到404,你能给我一些提示吗?

非常感谢!

共有1个答案

郑星雨
2023-03-14

首先,您应该显示用于发送HTTP请求的uri

从另一端,如果您将servlet映射到/correlateOut/*,则不得在目标映射中使用它,因为所有其他endpoint都在该上下文下。

因此,您的< code>path应该是< code > path = " { origin }/{ msgtype }/{ priority } "

 类似资料:
  • 我尝试使用以下代码,得到了回应:状态:405方法不允许。这是我的Http请求:http://localhost:8090/services/test?name=test.代码或http请求有什么问题?

  • 我不熟悉Spring集成。我正在尝试使用http入站网关构建一个简单的应用程序。下面是我得到的运行时异常。 下面是代码文件。 波约 服务 } 服务激活器 } 存储库 请帮助我,我正在试图找到异常发生的原因,但无法解决。提前谢谢。 集成文件。

  • 我正在将SpringBoot 2.0与Spring Integr5.0.3一起使用,并且我的HTTP. in边界网关有问题。我的目标是验证发布到网关的JSON,因为请求pojo由强制字段组成。 有没有一种简单的方法来验证pojo中的字段是否已设置?我已经测试过的是使用@NotNull-SpringValidation,但它似乎不受Spring集成的支持。 你好smoothny

  • 下面是配置了标头的出站http网关,但在添加轮询器时不会连续触发。它只会被触发一次,然后停止。

  • 所以我试图用th: href重定向整个网址,但它添加了我不想要的字符。 我现在的网址是这个 我试图回到帖子的一部分,那就是 所以现在这就是我的html的样子 这是我得到的网址 Id是正确的,但我不确定为什么

  • 我正在尝试将spring集成配置为向队列发送消息,然后接收消息,即非常简单的事情: 我认为解耦所必需的是在流程的两端都有一个消息网关。因此,我的第一次尝试(有效)如下所示: 其中MessageReceiverHandler()是扩展AbstractMessageHandler的bean。 所以上面我们有一个用于出站消息的消息网关。我假设我们也应该有一个用于入站消息的网关,允许我们将传入消息处理与应