Uploaded image for project: 'Camel'
  1. Camel
  2. CAMEL-11509

Cannot set content type with parameters without specifying charset

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 2.19.0, 2.19.1
    • Fix Version/s: 2.19.2, 2.20.0
    • Component/s: camel-http4
    • Labels:
      None

      Description

      When setting a content type that does not contain a charset parameter, for example this:

      .setHeader("Content-Type", constant("application/json;odata=verbose"))
      

      the route will fail with the following exception:

      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)
      

      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:

      if (contentTypeString != null) {
          if (contentTypeString.indexOf("charset") > 0) {
              contentType = ContentType.parse(contentTypeString);
          } else {
              contentType = ContentType.create(contentTypeString);
          }
      }
      

      There can be all kind of different parameters, though. Instead of checking for charset, it should rather check for the existence of a semicolon.

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                onders Onder Sezgin
                Reporter:
                sflor Steffen F.
              • Votes:
                0 Vote for this issue
                Watchers:
                5 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: