You are viewing a plain text version of this content. The canonical link for it is here.
Posted to httpclient-users@hc.apache.org by andrefe <fe...@gmail.com> on 2012/07/12 19:51:20 UTC

HttpResponse raw data

Hi all,

Using HttpClient 4.2, I was wondering why the capability of retrieving the
raw byte content that is parsed in a HTTP response is not supported: am I
missing something?

In other words, is not possible to obtain the very same output of a GET
request performed via telnet relying only on HttpClient methods?

Best,
Federico
-- 
View this message in context: http://old.nabble.com/HttpResponse-raw-data-tp34152297p34152297.html
Sent from the HttpClient-User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: httpclient-users-unsubscribe@hc.apache.org
For additional commands, e-mail: httpclient-users-help@hc.apache.org


Re: HttpResponse raw data

Posted by andrefe <fe...@gmail.com>.
In order to strees what I am looking for:

I'd like to retrieve an HttpResponse representation that, if inserted in a
(properly setup) TCP/IP payload sent to another listening host (also using
HttpClient), would be successfully decoded by a HttpClient process waiting
on the execute for the response.

 - A sends to B which sends to one of the hosts in set C (A->B->Cx)
 - one of the hosts in set C replies to B which replies to A (Cx->B->A)

I have the control of A and B.

I implemented the solution using for B a simple (round robin) load balancer
written in node.js and an HttpClient java process for A.

The reason why I need the described feature is for implementing also B with
HttpClient, preferrably with no HttpCore components (which would be possible
since I am relying on an enterprise service bus that may send the raw output
of my B module as response to the A module).

Best,
Federico


andrefe wrote:
> 
> Hi,
> 
> Thank you for your response. I tried a "brutal approach" like the one you
> were suggesting: basically I've appended the following information within
> a stringbuffer for an HTML page:
>  - Status line
> 
> stringBuffer.append(httpResponse.getStatusLine()).append("\n");
> 
>  - iterated output of getAllHeaders():
> 
> Header headers[] = httpResponse.getAllHeaders();
> for (Header header : headers) {
> 	stringBuffer.append(header.getName()).append(":
> ").append(header.getValue()).append("\n");
> }
> stringBuffer.append("\n");
> 
> - entity body content, parsed from a byte array response handler that I've
> implemented
> 
> String resp = new
> String(responseHandler.handleResponse(httpResponse),"UTF-8");
> stringBuffer.append(resp).append("\n");
> 
> 
> Still, the given output of while fetching an HTML web page (i.e.
> google.com) is different from the telnet output. A couple of headers (i.e.
> the content-length) are missing like some escaping sequences in the body.
> 
> Federico
> 
> 
> 
> Stephen J. Butler wrote:
>> 
>> On Thu, Jul 12, 2012 at 12:51 PM, andrefe <fe...@gmail.com>
>> wrote:
>>> Using HttpClient 4.2, I was wondering why the capability of retrieving
>>> the
>>> raw byte content that is parsed in a HTTP response is not supported: am
>>> I
>>> missing something?
>>>
>>> In other words, is not possible to obtain the very same output of a GET
>>> request performed via telnet relying only on HttpClient methods?
>> 
>> You're talking about not just the body, but all the headers? Getting
>> the byte[] of the response body is pretty easy
>> (response.getEntity().getContent() returns an InputStream). Don't know
>> about all the socket traffic.
>> 
>> You can log the traffic easily, for debugging purposes, if that's what
>> you're after.
>> 
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: httpclient-users-unsubscribe@hc.apache.org
>> For additional commands, e-mail: httpclient-users-help@hc.apache.org
>> 
>> 
>> 
> 
-- 
View this message in context: http://old.nabble.com/HttpResponse-raw-data-tp34152297p34152787.html
Sent from the HttpClient-User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: httpclient-users-unsubscribe@hc.apache.org
For additional commands, e-mail: httpclient-users-help@hc.apache.org


Re: HttpResponse raw data

Posted by andrefe <fe...@gmail.com>.
Hi,

Thank you for your response. I tried a "brutal approach" like the one you
were suggesting: basically I've appended the following information within a
stringbuffer for an HTML page:
 - Status line

stringBuffer.append(httpResponse.getStatusLine()).append("\n");

 - iterated output of getAllHeaders():

Header headers[] = httpResponse.getAllHeaders();
for (Header header : headers) {
	stringBuffer.append(header.getName()).append(":
").append(header.getValue()).append("\n");
}
stringBuffer.append("\n");

- entity body content, parsed from a byte array response handler that I've
implemented

String resp = new
String(responseHandler.handleResponse(httpResponse),"UTF-8");
stringBuffer.append(resp).append("\n");


Still, the given output of while fetching an HTML web page (i.e. google.com)
is different from the telnet output. A couple of headers (i.e. the
content-length) are missing like some escaping sequences in the body.

Federico



Stephen J. Butler wrote:
> 
> On Thu, Jul 12, 2012 at 12:51 PM, andrefe <fe...@gmail.com>
> wrote:
>> Using HttpClient 4.2, I was wondering why the capability of retrieving
>> the
>> raw byte content that is parsed in a HTTP response is not supported: am I
>> missing something?
>>
>> In other words, is not possible to obtain the very same output of a GET
>> request performed via telnet relying only on HttpClient methods?
> 
> You're talking about not just the body, but all the headers? Getting
> the byte[] of the response body is pretty easy
> (response.getEntity().getContent() returns an InputStream). Don't know
> about all the socket traffic.
> 
> You can log the traffic easily, for debugging purposes, if that's what
> you're after.
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: httpclient-users-unsubscribe@hc.apache.org
> For additional commands, e-mail: httpclient-users-help@hc.apache.org
> 
> 
> 
-- 
View this message in context: http://old.nabble.com/HttpResponse-raw-data-tp34152297p34152408.html
Sent from the HttpClient-User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: httpclient-users-unsubscribe@hc.apache.org
For additional commands, e-mail: httpclient-users-help@hc.apache.org


Re: HttpResponse raw data

Posted by "Stephen J. Butler" <st...@gmail.com>.
On Thu, Jul 12, 2012 at 12:51 PM, andrefe <fe...@gmail.com> wrote:
> Using HttpClient 4.2, I was wondering why the capability of retrieving the
> raw byte content that is parsed in a HTTP response is not supported: am I
> missing something?
>
> In other words, is not possible to obtain the very same output of a GET
> request performed via telnet relying only on HttpClient methods?

You're talking about not just the body, but all the headers? Getting
the byte[] of the response body is pretty easy
(response.getEntity().getContent() returns an InputStream). Don't know
about all the socket traffic.

You can log the traffic easily, for debugging purposes, if that's what
you're after.

---------------------------------------------------------------------
To unsubscribe, e-mail: httpclient-users-unsubscribe@hc.apache.org
For additional commands, e-mail: httpclient-users-help@hc.apache.org