You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Steffen F. (JIRA)" <ji...@apache.org> on 2017/07/04 12:05:00 UTC
[jira] [Created] (CAMEL-11509) Cannot set content type with
parameters without specifying charset
Steffen F. created CAMEL-11509:
----------------------------------
Summary: Cannot set content type with parameters without specifying charset
Key: CAMEL-11509
URL: https://issues.apache.org/jira/browse/CAMEL-11509
Project: Camel
Issue Type: Bug
Components: camel-http4
Affects Versions: 2.19.1, 2.19.0
Reporter: Steffen F.
When setting a content type that does not contain a charset parameter, for example this:
{noformat}
.setHeader("Content-Type", constant("application/json;odata=verbose"))
{noformat}
the route will fail with the following exception:
{noformat}
java.lang.IllegalArgumentException: MIME type may not contain reserved characters
at org.apache.http.util.Args.check(Args.java:36)
at org.apache.http.entity.ContentType.create(ContentType.java:206)
at org.apache.http.entity.ContentType.create(ContentType.java:218)
at org.apache.camel.component.http4.HttpProducer.createRequestEntity(HttpProducer.java:511)
{noformat}
although this is clearly a valid content type according to the RFC: https://tools.ietf.org/html/rfc2045#section-5.1
This only affects version 2.19+, because in version 4.4.6 of the httpcomponents-core library, they changed the behavior of {{create}} to check the mime type for semicolons, which it previously didn't. If we, however, also use a charset parameter, you will call the {{parse}} method instead:
{noformat}
if (contentTypeString != null) {
if (contentTypeString.indexOf("charset") > 0) {
contentType = ContentType.parse(contentTypeString);
} else {
contentType = ContentType.create(contentTypeString);
}
}
{noformat}
There can be all kind of different parameters, though. Instead of checking for charset, it should rather check for the existence of a semicolon.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)