Ryan Wegmeier
Ryan Wegmeier

Reputation: 81

How to send HTTP-Request from my IntegrationFlow?

I receive a Request from the Client which returns a SendRequest-Object that has a HttpMethod, a path and data to send. Now I would like to send the Request depending on the object I get to the API.

After sending I will get a Response.

The problem now is how can I send the payload and receive the response.

@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();

Upvotes: 0

Views: 794

Answers (1)

Artem Bilan
Artem Bilan

Reputation: 121272

It's not clear what is your SendRequest, but the idea for the method is exactly the same what you have done for the url:

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

Although, since you want to have some extraction for the request body, you need to do that in advance in the transform() and move values for url and method to the headers. There is just no any payload extraction in the Http.outboundGateway: it deals with the whole request payload as an entity for HTTP request body.

Upvotes: 1

Related Questions