Finally solved. About time, it was out of options anyway, it was inevitable
to stumble over correct solution :D
Two things, erase exchange body passed from CXF (it works but why it's like
that?), then gzip unmarshalling (that was hard for me to find out, stupid
me).

from("cxfrs:bean:jenkinsServer")
.choice()
.when(header(CxfConstants.OPERATION_NAME).isEqualTo("test"))
.setBody(constant(""))
.to("http://www.google.com?bridgeEndpoint=true";)
.unmarshal().gzip().convertBodyTo(String.class)

Woooohoooo :)


On Fri, Jan 4, 2013 at 3:07 PM, Martin Stiborský <[email protected]
> wrote:

> Maybe, it's really a CXF problem?
> Because, it seems to me that the Camel HTTP component just does its job as
> expected...
> I wrote a simple test and voila - google is there :)
> It's failing of course, I was maily curious about the body content, that's
> why the asserting with "".
>
> public class FetchWebTest extends CamelTestSupport {
>
>     @EndpointInject(uri = "mock:fetchWebpage")
>     protected MockEndpoint resultEndpoint;
>
>     @Produce(uri = "direct:start")
>     protected ProducerTemplate template;
>
>     @Test
>     public void testDatFetch() throws InterruptedException {
>         String expectedBody = "";
>
>         resultEndpoint.expectedBodiesReceived(expectedBody);
>
>         template.sendBodyAndHeader("", Exchange.HTTP_METHOD, "GET");
>
>         resultEndpoint.assertIsSatisfied();
>     }
>
>     @Override
>     protected RouteBuilder createRouteBuilder() {
>         return new RouteBuilder() {
>             @Override
>             public void configure() throws Exception {
>                 from("direct:start").to("http://www.google.com
> ").to("mock:fetchWebpage");
>             }
>         };
>     }
> }
>
>
>
> On Fri, Jan 4, 2013 at 1:23 PM, Martin Stiborský <
> [email protected]> wrote:
>
>> Hi,
>> I have a simple case - CXF as producer and based on the HTTP request
>> parameters, I need fetch some web page - with help of Camel HTTP component,
>> I guess.
>>
>> For start, simple code:
>>
>> from("cxfrs:bean:jenkinsServer")
>> .choice()
>> .when(header(CxfConstants.OPERATION_NAME).isEqualTo("test"))
>> .to("
>> http://www.google.com?bridgeEndpoint=true&throwExceptionOnFailure=false";)
>>
>> I'd expect, that after I hit a "localhost:1234/test" in my browser, I'll
>> see a google.com source code, wrong :( Actually, I've got an exception:
>>
>> org.apache.camel.InvalidPayloadException: No body available of type:
>> java.io.InputStream but has value: [] of type:
>> org.apache.cxf.message.MessageContentsList on: Message: []. Caused by: No
>> type converter available to convert from type:
>> org.apache.cxf.message.MessageContentsList to the required type:
>> java.io.InputStream with value []. Exchange[Message: []]. Caused by:
>> [org.apache.camel.NoTypeConversionAvailableException - No type converter
>> available to convert from type: org.apache.cxf.message.MessageContentsList
>> to the required type: java.io.InputStream with value []]
>>
>> Now, after so many tries and googling, I'm not sure why and where it's
>> wrong...
>>
>> Is there a way how to make it work? Sure I can write my own bean to
>> fetching data with HTTP requests, but I was thinking that Camel HTTP
>> component could be capable of that.
>>
>> --
>> S pozdravem / Best regards
>> Martin Stiborský
>>
>> Jabber: [email protected]
>> Twitter: http://www.twitter.com/stibi
>>
>
>
>
> --
> S pozdravem / Best regards
> Martin Stiborský
>
> Jabber: [email protected]
> Twitter: http://www.twitter.com/stibi
>



-- 
S pozdravem / Best regards
Martin Stiborský

Jabber: [email protected]
Twitter: http://www.twitter.com/stibi

Reply via email to