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

How to send HTTP-Request from my IntegrationFlow?

我收到来自客户端的请求,其中 returns 一个具有 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();

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

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

尽管如此,由于您希望对请求 body 进行一些提取,因此您需要提前在 transform() 中执行此操作并移动 url 和 [=12 的值=] 到 headers。 Http.outboundGateway 中没有任何有效载荷提取:它将整个请求有效载荷作为 HTTP 请求的实体处理 body。