[
https://issues.apache.org/jira/browse/CAMEL-25309?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Claus Ibsen resolved CAMEL-25309.
---------------------------------
Fix Version/s: 4.23.0
Resolution: Fixed
Fixed by https://github.com/apache/camel/pull/27331 (9e192fd3aefa).
> camel-http - a Map or List body says to marshal it to JSON first
> ----------------------------------------------------------------
>
> Key: CAMEL-25309
> URL: https://issues.apache.org/jira/browse/CAMEL-25309
> Project: Camel
> Issue Type: Improvement
> Components: camel-http
> Reporter: Claus Ibsen
> Priority: Minor
> Fix For: 4.23.0
>
>
> When the message body is a {{Map}} or a {{List}} (typically after
> {{unmarshal: json}}, or a body built as a map), the HTTP producer fails with
> {noformat}InvalidPayloadException: No body available of type:
> java.io.InputStream but has type: java.util.LinkedHashMap on:
> order-1001.json. Caused by: No type converter available to convert from type:
> java.util.LinkedHashMap to the required type: java.io.InputStream{noformat}
> That names the conversion, not what to do. Found in the local-model benchmark
> (contracts/openapi-client, a rest-openapi call to a JSON operation through
> camel-http): 3 of 5 runs failed on it, the model not seeing that the body
> must be JSON text.
> *Proposal:* in {{HttpProducer.createRequestEntity}}, when the body is a Map
> or a Collection and cannot become a stream, keep the exception type and add a
> hint: a Map or List is not an HTTP request body; marshal it to JSON first
> ({{marshal: json}}) or set the body to the JSON text.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)