hc-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Dhruvakumar P G <dhruvakumar....@oracle.com>
Subject Re: Content-Encoding header is missing in httpclient's response
Date Mon, 09 Dec 2013 13:45:49 GMT

On 12/9/2013 4:41 PM, Oleg Kalnichevski wrote:
> On Mon, 2013-12-09 at 13:09 +0530, Dhruvakumar P G wrote:
>> Hello,
>>
>> I'm in the middle of upgrading Httpclient, mime, core libraries to
>> latest version. I haven't been able to figure out any solution to the
>> following problem.
>> When Httpclient downloads a text file(icité Àâqë-withmultibytechars.txt)
>> which contains multibyte characters from another server and sends it to
>> the browser.
>> *The server returns the response headers as below :*
>>
>> HTTP/1.1 200 OK
>> X-Powered-By: Servlet/2.5
>> Content-Disposition: attachment;       filename="icité
>> Àâqë-withmultibytechars.txt"
>> Content-Type: application/octet-stream
>> Content-Length: 162
>> *
>> **Browser receives the headers as below and shows the filename rightly :*
>>
>> Content-Disposition    attachment; filename="icité
>> Àâqë-withmultibytechars.txt"
>> Content-Type    application/octet-stream
>> Transfer-Encoding    chunked
>>
>> When Httpclient downloads an image file(ウェ.jpg) from another server
>> and sends it to the browser.
>> *The server returns the response headers as below : *
>> HTTP/1.1 200 OK
>> X-Powered-By: Servlet/2.5
>> Content-Disposition: attachment; filename="ウェ.jpg"
>> Content-Encoding: gzip
>> Content-Type: application/octet-stream
>> Transfer-Encoding: chunked
>>
>> Even though  "Content-Encoding: gzip" header is returned by the server,
>> the response object doesn't have this header.
>> Somehow this header has been removed from the response when the request
>> gets executed,  _response = _httpClient.execute(_httpHost, _httpMethod,
>> _httpContext);
>>
>> *Browser will not receive this header, non-ascii characters aren't
>> recognized in the filename of download dialogue, it just shows empty
>> characters:*
>> Content-Disposition    attachment; filename="   .jpg"
>> Content-Type    application/octet-stream
>> Transfer-Encoding    chunked, chunked
>>
>> Am I missing something here ? How do I make sure that the Httpclient
>> doesn't ignore this header and browser get to show the filename rightly ?
>>
> HTTP message headers may not have non-ASCII per requirements of the HTTP
> protocol. The target server is in violation of the HTTP specification.
Yes indeed,  the target server should return encoded filename : 
*Content-disposition: attachment; filename="=?utf-8?B?44Km44KnLmpwZw==?="*
But instead it is returning unencoded filename : Content-Disposition: 
attachment; filename="ウェ.jpg"
Can't I resolve my issue unless target server returns encoded filename ?

Thanks,
Dhruva
> One can force HttpClient, though, to use a non-standard charset for HTTP
> messages by using a custom ConnectionConfig.
>
> Oleg
>
I have set the charset to UTF-8, 
connectionConfigBuilder.setCharset(Consts.UTF_8)
Will Setting charset to any other make httpclient to not to lose 
'Content-Encoding' response header ?

Thanks,
Dhruva
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@hc.apache.org
> For additional commands, e-mail: dev-help@hc.apache.org
>


Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message