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]