[
https://issues.apache.org/jira/browse/CAMEL-14959?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17109378#comment-17109378
]
saksham commented on CAMEL-14959:
---------------------------------
Hi [~davsclaus]
Please find the attached projects for reproducing the issue. And below is how
to use them:
1. Echo server (echoServer.zip): contains a nodejs based web server. It only
has one end point "/echo".
This endpoint returns the body it receives. It sets the response header
"content-type" as "text/plain". No charset
Note, this server starts on default http port : 80.
2. apache-camel-consume.zip : contains a maven project for invoking the echo
endpoint of echoserver.
It sends a text/plain content-type with body: *HÃLLO*. It does not set any
charset in the content-type.
But the body it receives is: *H?LLO*.
Root cause:
If you check the org.apache.http.entity.StringEntity, it uses the default
charset, if none is provided. And the default is ISO-8859-1.
But the while handling the response , the default charset that is used in
IOHelper.getCharsetFromContentType is UTF-8.
Thus, there is this difference in the message sent and received.
we expect the ISO-8859-1 to be used whenever the charset is not present as it
is the default charset as per HTTP 1.1 standards.
Also note, I tried to send the charset as utf-8 in the request, then the sent
and received body is same as expected.
But we want the default charset to be uniform everywhere.
> Inconsistent behavior of default charset in StringEntity and
> IOHelper.getCharsetFromContentType
> -----------------------------------------------------------------------------------------------
>
> Key: CAMEL-14959
> URL: https://issues.apache.org/jira/browse/CAMEL-14959
> Project: Camel
> Issue Type: Bug
> Components: camel-http, camel-http4
> Affects Versions: 2.23.1
> Reporter: saksham
> Priority: Minor
> Attachments: apache-camel-consume.zip, echoServer.zip
>
>
> In our product, we invoke the Odata endpoint of a different service, it uses
> an CSRF nonce.
> So in one post requset, two thing happen, Fetch the CSRF nonce and Post the
> actual request.
> Here on processing the response of Fetch, it sets the charset from
> IOHelper.getCharsetFromContentType. If there is no charset in the response
> header Content-Type, then UTF-8 is set to default.
> Thus this charset gets put on the exchange object. and used further in the
> post request.
> But when we are creating a request entity. in HttpProducer.createRequestEntity
> The default charset it uses is ISO-8859-1 which is correct as per HTTP 1.1
> standard.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)