[
https://issues.apache.org/jira/browse/CAMEL-12424?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Fabricio Guimarães Pellegrini updated CAMEL-12424:
--------------------------------------------------
Summary: HTTPHelper.setCharsetFromContentType can't properly extract the
charset if it isn't the last parameter (was:
HTTPHelper.setCharsetFromContentType can't extract the charset if it isn't the
last parameter)
> HTTPHelper.setCharsetFromContentType can't properly extract the charset if it
> isn't the last parameter
> ------------------------------------------------------------------------------------------------------
>
> Key: CAMEL-12424
> URL: https://issues.apache.org/jira/browse/CAMEL-12424
> Project: Camel
> Issue Type: Bug
> Components: camel-http-common
> Affects Versions: 2.19.2
> Environment: Apache Camel 2.19.2
> Karaf 4.1.2
> JDK 1.8.0_161
> Reporter: Fabricio Guimarães Pellegrini
> Priority: Major
> Labels: easyfix
>
> When our application recieves the Content-Type:
> application/json;charset=utf-8;profile="http://my.company.profile.errorSchema.4.json#",
> the HTTPHelper sets the wrong value for the Exchange.CHARSET_NAME in the
> Exchange.
> {quote} @SuppressWarnings("deprecation")
> public static void setCharsetFromContentType(String contentType, Exchange
> exchange) {
> if (contentType != null) {
> // find the charset and set it to the Exchange
> int index = contentType.indexOf("charset=");
> if (index > 0) {
> String charset = contentType.substring(index + 8); //HERE IS
> THE PROBLEM
> exchange.setProperty(Exchange.CHARSET_NAME,
> IOConverter.normalizeCharset(charset));
> }
> }
> }
> {quote}
> Because of that, when the HTTPProducer tries to load the body we get the
> following error:
> {quote}Exception: Error during type conversion from type: java.lang.String to
> the required type: java.lang.String with value [Body is instance of
> java.io.InputStream] due java.io.UnsupportedEncodingException:
> utf-8;profile="http://my.company.profile.errorSchema.4.json#
> org.apache.camel.TypeConversionException: Error during type conversion from
> type: java.lang.String to the required type: java.lang.String with value
> [Body is instance of java.io.InputStream] due
> java.io.UnsupportedEncodingException:
> utf-8;profile="http://my.company.profile.errorSchema.4.json#
> at
> org.apache.camel.impl.converter.BaseTypeConverterRegistry.createTypeConversionException(BaseTypeConverterRegistry.java:629)
> [178:org.apache.camel.camel-core:2.19.2]
> at
> org.apache.camel.impl.converter.BaseTypeConverterRegistry.convertTo(BaseTypeConverterRegistry.java:150)
> [178:org.apache.camel.camel-core:2.19.2]
> at
> org.apache.camel.core.osgi.OsgiTypeConverter.convertTo(OsgiTypeConverter.java:120)
> [176:org.apache.camel.camel-blueprint:2.19.2]
> at
> org.apache.camel.component.http4.HttpProducer.populateHttpOperationFailedException(HttpProducer.java:305)
> [182:org.apache.camel.camel-http4:2.19.2]
> at
> org.apache.camel.component.http4.HttpProducer.process(HttpProducer.java:207)
> [182:org.apache.camel.camel-http4:2.19.2]
> Caused by: org.apache.camel.RuntimeCamelException:
> java.io.UnsupportedEncodingException:
> utf-8;profile="http://my.company.profile.errorSchema.4.json#
> at
> org.apache.camel.util.ObjectHelper.wrapRuntimeCamelException(ObjectHelper.java:1774)
> ~[?:?]
> at
> org.apache.camel.util.ObjectHelper.invokeMethod(ObjectHelper.java:1355) ~[?:?]
> at
> org.apache.camel.impl.converter.StaticMethodTypeConverter.convertTo(StaticMethodTypeConverter.java:59)
> ~[?:?]
> at
> org.apache.camel.impl.converter.BaseTypeConverterRegistry.doConvertTo(BaseTypeConverterRegistry.java:306)
> ~[?:?]
> at
> org.apache.camel.impl.converter.BaseTypeConverterRegistry.convertTo(BaseTypeConverterRegistry.java:133)
> ~[?:?]
> ... 70 more
> Caused by: java.io.UnsupportedEncodingException:
> utf-8;profile="http://my.company.profile.errorSchema.4.json#
> at
> sun.nio.cs.StreamDecoder.forInputStreamReader(StreamDecoder.java:71) ~[?:?]
> at java.io.InputStreamReader.<init>(InputStreamReader.java:100) ~[?:?]
> at
> org.apache.camel.converter.IOConverter.toReader(IOConverter.java:179) ~[?:?]
> at
> org.apache.camel.converter.IOConverter.toString(IOConverter.java:364) ~[?:?]
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> ~[?:?]
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> ~[?:?]
> at java.lang.reflect.Method.invoke(Method.java:498) ~[?:?]
> at
> org.apache.camel.util.ObjectHelper.invokeMethod(ObjectHelper.java:1351) ~[?:?]
> at
> org.apache.camel.impl.converter.StaticMethodTypeConverter.convertTo(StaticMethodTypeConverter.java:59)
> ~[?:?]
> at
> org.apache.camel.impl.converter.BaseTypeConverterRegistry.doConvertTo(BaseTypeConverterRegistry.java:306)
> ~[?:?]
> at
> org.apache.camel.impl.converter.BaseTypeConverterRegistry.convertTo(BaseTypeConverterRegistry.java:133)
> ~[?:?]
> {quote}
>
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)