I have wired up an HTTP bridge between two spring integration services as follows. On the sending side (HTTP Client):
In the webapp:
The sending has the "extract-payload" property set to false so that the message will be sent serialized, preserving the headers in the message, and more importantly, preserving their case. However, the receiving side does not seem to have an option to specify that the payload is already a serialized message. So it cannot handle this correctly. Note, using a channel adapter because I do not expect a reply.
The method of HttpRequestHandlingEndpointSupport calls generatePayloadFromRequestBody, which correctly chooses the SerializingHttpMessageConverter class to convert the HTTP request body into a Message<?>. However, the HttpRequestHandlingEndpointSupport then attempts to construct a new Message using the MessageBuilder with the Message<?> as the payload. That last part fails.
I can send the messages across without using the SerializingHttpMessageConverter (leave out the extract-payload="false") but then message headers do not preserve their case, since the HTTP Request headers are passed into the header converter un all-lowercase form.