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: [email protected]
For additional commands, e-mail: [email protected]


Reply via email to