On Mon, 2013-12-09 at 19:15 +0530, Dhruvakumar P G wrote: > 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 ? >
I am not aware of a single confirmed case of HttpClient losing headers. You can use wire / context logging to see what data packets are transmitted across the wire. Oleg --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
