[ 
https://issues.apache.org/jira/browse/HTTPCLIENT-884?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12904568#action_12904568
 ] 

Oleg Kalnichevski commented on HTTPCLIENT-884:
----------------------------------------------

I am somewhat reluctant to introduce workarounds for non-compliant servers in 
this particular case, as it is pretty trivial to put together a customised 
UrlEncodedFormEntity implementation or to override the default value with the 
#setContentType method. What could be done, tough, is changing 
UrlEncodedFormEntity to exclude 'charset' parameter from the ContentType header 
if it is not explicitly set by the user (encoding constructor parameter is 
null). 

Oleg

> Charset omitted from UrlEncodedFormEntity Content-Type header
> -------------------------------------------------------------
>
>                 Key: HTTPCLIENT-884
>                 URL: https://issues.apache.org/jira/browse/HTTPCLIENT-884
>             Project: HttpComponents HttpClient
>          Issue Type: Bug
>          Components: HttpClient
>    Affects Versions: 4.0 Final
>         Environment: all
>            Reporter: Jared Jacobs
>            Priority: Minor
>             Fix For: 4.0.1, 4.1 Alpha1
>
>   Original Estimate: 1h
>  Remaining Estimate: 1h
>
> UrlEncodedFormEntity sets the Content-Type header to:
>    "application/x-www-form-urlencoded"
> It should set the header to:
>    "application/x-www-form-urlencoded; charset=" + charset
> As a result, content can be misinterpreted by the recipient (e.g. if the 
> entity content includes multibyte Unicode characters encoded with the "UTF-8" 
> charset).
> For a correct example of specifying the charset in the Content-Type header, 
> see StringEntity.java.
> Here's the fix:
>     public UrlEncodedFormEntity (
>         final List <? extends NameValuePair> parameters, 
>         final String encoding) throws UnsupportedEncodingException {
>         super(URLEncodedUtils.format(parameters, encoding),  encoding);
> -        setContentType(URLEncodedUtils.CONTENT_TYPE);
> +        setContentType(URLEncodedUtils.CONTENT_TYPE + HTTP.CHARSET_PARAM +
> +            (encoding != null ? encoding : HTTP.DEFAULT_CONTENT_CHARSET));
>     }
>     public UrlEncodedFormEntity (
>         final List <? extends NameValuePair> parameters) throws 
> UnsupportedEncodingException {
> -        super(URLEncodedUtils.format(parameters, 
> HTTP.DEFAULT_CONTENT_CHARSET), 
> -            HTTP.DEFAULT_CONTENT_CHARSET);
> -        setContentType(URLEncodedUtils.CONTENT_TYPE);
> +        this(parameters, HTTP.DEFAULT_CONTENT_CHARSET);
>     }

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to