如何从我的IntegrationFlow发送HTTP请求?

时间:2019-07-05 08:52:27

标签: java spring spring-integration spring-integration-dsl

我从客户端收到一个请求,该请求返回一个具有HttpMethod,要发送的路径和数据的SendRequest-Object。 现在,我想根据获取到API的对象来发送请求。

发送后,我将收到回复。

现在的问题是如何发送有效载荷并接收响应。

@Bean
    public IntegrationFlow httpPostSendRawData() {
        return IntegrationFlows.from(
                Http.inboundGateway("/api/data/send")
                        .requestMapping(r -> r.methods(HttpMethod.POST))
                        .statusCodeExpression(dataParser().parseExpression("T(org.springframework.http.HttpStatus).BAD_REQUEST"))
                        .requestPayloadType(ResolvableType.forClass(DataSend.class))
                        .crossOrigin(cors -> cors.origin("*"))
                        .headerMapper(dataHeaderMapper())
        )
                .channel("http.data.send.channel")
                .handle("rawDataEndpoint", "send")
                .transform(/* here i have some transformations*/)
                .handle(Http.outboundGateway((Message<SendRequest> r)->r.getPayload().getPath())
                        .httpMethod(/* Here I would like to get the Method of SendRequest*/)
                        //add payload
                        .extractPayload(true))
.get();

1 个答案:

答案 0 :(得分:1)

不清楚您的SendRequest是什么,但是method的想法与您对url所做的完全相同:

.httpMethodFunction((Message<SendRequest> r)->r.getPayload().getMethod())

尽管,由于您希望对请求正文进行一些提取,因此您需要事先在transform()中进行提取,并将urlmethod的值移到标题中。 Http.outboundGateway中没有任何有效负载提取:它以HTTP请求主体的实体形式处理整个请求有效负载。