Return-Path: X-Original-To: apmail-hc-dev-archive@www.apache.org Delivered-To: apmail-hc-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 73FE110B99 for ; Mon, 9 Dec 2013 14:14:05 +0000 (UTC) Received: (qmail 92852 invoked by uid 500); 9 Dec 2013 14:14:05 -0000 Delivered-To: apmail-hc-dev-archive@hc.apache.org Received: (qmail 92678 invoked by uid 500); 9 Dec 2013 14:14:03 -0000 Mailing-List: contact dev-help@hc.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: "HttpComponents Project" Delivered-To: mailing list dev@hc.apache.org Received: (qmail 92669 invoked by uid 99); 9 Dec 2013 14:14:02 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 09 Dec 2013 14:14:02 +0000 X-ASF-Spam-Status: No, hits=-0.0 required=5.0 tests=SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (athena.apache.org: local policy includes SPF record at spf.trusted-forwarder.org) Received: from [217.150.250.48] (HELO kalnich.nine.ch) (217.150.250.48) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 09 Dec 2013 14:13:55 +0000 Received: from [192.168.42.135] (unknown [213.55.184.214]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by kalnich.nine.ch (Postfix) with ESMTPSA id 87666B80058 for ; Mon, 9 Dec 2013 15:13:33 +0100 (CET) Message-ID: <1386598411.24937.11.camel@ubuntu> Subject: Re: Content-Encoding header is missing in httpclient's response From: Oleg Kalnichevski To: HttpComponents Project Date: Mon, 09 Dec 2013 15:13:31 +0100 In-Reply-To: <52A5C98D.2050909@oracle.com> References: <52A5739E.1020400@oracle.com> <1386587462.24937.7.camel@ubuntu> <52A5C98D.2050909@oracle.com> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.8.4-0ubuntu1 Mime-Version: 1.0 Content-Transfer-Encoding: 8bit X-Virus-Checked: Checked by ClamAV on apache.org 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: dev-unsubscribe@hc.apache.org For additional commands, e-mail: dev-help@hc.apache.org