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