You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by Harbeer Kadian <ha...@altair.com> on 2010/03/23 15:08:33 UTC

Not able to invoke webservice using http component

Hi,

I deployed a simple webservice on TomCat Server.
I created following route to access the webservice using apache camel.

from("direct:ProducerUri")
.to("http://localhost:8095/WebServiceTutorial/services/Hello?username=admin&password=admin");

I created the exchange in the following way
String soapMessage = "<soapenv:Envelope
xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\"
xmlns:tut=\"http://tutorial.com\"><soapenv:Header/><soapenv:Body><tut:sayHello><tut:name>"
                + "Harbeer Kadian" +
"</tut:name></tut:sayHello></soapenv:Body></soapenv:Envelope>";
            XmlConverter xmlConverter = new XmlConverter();
            
Document input = xmlConverter.toDOMDocument(soapMessage);
exchange.getIn().setBody(input);
exchange.setPattern(ExchangePattern.InOut);
//added this line after seeing no soapAction found error on Tom Cat Server
log
exchange.getIn().setHeader("SOAPAction", "");
exchange = producerTemplate.send("direct:ProducerUri", exchange);
Document output = (Document)exchange.getOut().getBody();
System.out.println(output);

I am getting null as output.
Also on the tom cat server log, no exception is coming.

I have no idea how to invoke webservice using http component.
Please help me.

With Regards
Harbeer Kadian

-- 
View this message in context: http://old.nabble.com/Not-able-to-invoke-webservice-using-http-component-tp28001459p28001459.html
Sent from the Camel - Users mailing list archive at Nabble.com.


Re: Not able to invoke webservice using http component

Posted by Willem Jiang <wi...@gmail.com>.
Hi,

You can try to use the soap dataformat[1] which is new to Camel 2.3.0.
And you need to download the Camel 2.3.0-SNAPSHOT for it.	

[1]http://camel.apache.org/soap.html

Willem

Harbeer Kadian wrote:
> Hi,
> thanks for the reply.
> I did not changed the input soap message into Document and directly sent it.
> I got the soap message reply in the form of String.
> The reply is as follows
> <?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope
> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soapenv:Body><sayHelloResponse
> xmlns="http://tutorial.com"><sayHelloReturn>Hello Harbeer
> Kadian</sayHelloReturn></sayHelloResponse></soapenv:Body></soapenv:Envelope>
> 
> Now i want to read this output and change it into java objects, just like
> what a webservice client do.
> Do there are any standard api to do this.
> Or I have to use some sort of XQuery or XSLT Transformer to get the soap
> body.
> 
> With Regards
> Harbeer Kadian
> 
> 
> 
> willem.jiang wrote:
>> Yes, if you want to send a request from camel-http endpoint, you just 
>> need put the a Sting, InputStream or HttpEntity into to the message 
>> body, otherwise camel-http endponit may not send right request to the 
>> service.
>>
>> Willem
>>
>> ychawla wrote:
>>> Hi Habeer,
>>> Do you need to do the DOM conversions that you are doing:
>>>
>>> Document input = xmlConverter.toDOMDocument(soapMessage);
>>> exchange.getIn().setBody(input);
>>>
>>> Can't you just set the body to be a string?
>>>
>>> Same with the return message.  That might be tripping something up. 
>>> Also,
>>> are you able to get to your webservice using a browser/basic auth:
>>>
>>> http://localhost:8095/WebServiceTutorial/services/Hello?username=admin&password=admin
>>>
>>> When I was first setting up a web service connection through HTTP, I set
>>> up
>>> a polling folder and result folder and got that working first.  I just
>>> made
>>> the entire soap message in a text editor which it looks like you already
>>> have.  Then you can set up a simple route to test for web service
>>> connectivity:
>>>
>>> <from uri="file:/tmp/input"/>
>>> <to
>>> uri="http://localhost:8095/WebServiceTutorial/services/Hello?username=admin&password=admin"
>>> />
>>> <to uri="file:/tmp/output"/>
>>>
>>> Cheers,
>>> Yogesh
>>>
>>>
>>> Harbeer Kadian wrote:
>>>> Hi,
>>>>
>>>> I deployed a simple webservice on TomCat Server.
>>>> I created following route to access the webservice using apache camel.
>>>>
>>>> from("direct:ProducerUri")
>>>> .to("http://localhost:8095/WebServiceTutorial/services/Hello?username=admin&password=admin");
>>>>
>>>> I created the exchange in the following way
>>>> String soapMessage = "<soapenv:Envelope
>>>> xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\"
>>>> xmlns:tut=\"http://tutorial.com\"><soapenv:Header/><soapenv:Body><tut:sayHello><tut:name>"
>>>>                 + "Harbeer Kadian" +
>>>> "</tut:name></tut:sayHello></soapenv:Body></soapenv:Envelope>";
>>>>             XmlConverter xmlConverter = new XmlConverter();
>>>>             
>>>> Document input = xmlConverter.toDOMDocument(soapMessage);
>>>> exchange.getIn().setBody(input);
>>>> exchange.setPattern(ExchangePattern.InOut);
>>>> //added this line after seeing no soapAction found error on Tom Cat
>>>> Server
>>>> log
>>>> exchange.getIn().setHeader("SOAPAction", "");
>>>> exchange = producerTemplate.send("direct:ProducerUri", exchange);
>>>> Document output = (Document)exchange.getOut().getBody();
>>>> System.out.println(output);
>>>>
>>>> I am getting null as output.
>>>> Also on the tom cat server log, no exception is coming.
>>>>
>>>> I have no idea how to invoke webservice using http component.
>>>> Please help me.
>>>>
>>>> With Regards
>>>> Harbeer Kadian
>>>>
>>>>
>>
>>
> 


Re: Not able to invoke webservice using http component

Posted by Harbeer Kadian <ha...@altair.com>.
Hi,
thanks for the reply.
I did not changed the input soap message into Document and directly sent it.
I got the soap message reply in the form of String.
The reply is as follows
<?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soapenv:Body><sayHelloResponse
xmlns="http://tutorial.com"><sayHelloReturn>Hello Harbeer
Kadian</sayHelloReturn></sayHelloResponse></soapenv:Body></soapenv:Envelope>

Now i want to read this output and change it into java objects, just like
what a webservice client do.
Do there are any standard api to do this.
Or I have to use some sort of XQuery or XSLT Transformer to get the soap
body.

With Regards
Harbeer Kadian



willem.jiang wrote:
> 
> Yes, if you want to send a request from camel-http endpoint, you just 
> need put the a Sting, InputStream or HttpEntity into to the message 
> body, otherwise camel-http endponit may not send right request to the 
> service.
> 
> Willem
> 
> ychawla wrote:
>> Hi Habeer,
>> Do you need to do the DOM conversions that you are doing:
>> 
>> Document input = xmlConverter.toDOMDocument(soapMessage);
>> exchange.getIn().setBody(input);
>> 
>> Can't you just set the body to be a string?
>> 
>> Same with the return message.  That might be tripping something up. 
>> Also,
>> are you able to get to your webservice using a browser/basic auth:
>> 
>> http://localhost:8095/WebServiceTutorial/services/Hello?username=admin&password=admin
>> 
>> When I was first setting up a web service connection through HTTP, I set
>> up
>> a polling folder and result folder and got that working first.  I just
>> made
>> the entire soap message in a text editor which it looks like you already
>> have.  Then you can set up a simple route to test for web service
>> connectivity:
>> 
>> <from uri="file:/tmp/input"/>
>> <to
>> uri="http://localhost:8095/WebServiceTutorial/services/Hello?username=admin&password=admin"
>> />
>> <to uri="file:/tmp/output"/>
>> 
>> Cheers,
>> Yogesh
>> 
>> 
>> Harbeer Kadian wrote:
>>> Hi,
>>>
>>> I deployed a simple webservice on TomCat Server.
>>> I created following route to access the webservice using apache camel.
>>>
>>> from("direct:ProducerUri")
>>> .to("http://localhost:8095/WebServiceTutorial/services/Hello?username=admin&password=admin");
>>>
>>> I created the exchange in the following way
>>> String soapMessage = "<soapenv:Envelope
>>> xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\"
>>> xmlns:tut=\"http://tutorial.com\"><soapenv:Header/><soapenv:Body><tut:sayHello><tut:name>"
>>>                 + "Harbeer Kadian" +
>>> "</tut:name></tut:sayHello></soapenv:Body></soapenv:Envelope>";
>>>             XmlConverter xmlConverter = new XmlConverter();
>>>             
>>> Document input = xmlConverter.toDOMDocument(soapMessage);
>>> exchange.getIn().setBody(input);
>>> exchange.setPattern(ExchangePattern.InOut);
>>> //added this line after seeing no soapAction found error on Tom Cat
>>> Server
>>> log
>>> exchange.getIn().setHeader("SOAPAction", "");
>>> exchange = producerTemplate.send("direct:ProducerUri", exchange);
>>> Document output = (Document)exchange.getOut().getBody();
>>> System.out.println(output);
>>>
>>> I am getting null as output.
>>> Also on the tom cat server log, no exception is coming.
>>>
>>> I have no idea how to invoke webservice using http component.
>>> Please help me.
>>>
>>> With Regards
>>> Harbeer Kadian
>>>
>>>
>> 
> 
> 
> 

-- 
View this message in context: http://old.nabble.com/Not-able-to-invoke-webservice-using-http-component-tp28001459p28013965.html
Sent from the Camel - Users mailing list archive at Nabble.com.


Re: Not able to invoke webservice using http component

Posted by Willem Jiang <wi...@gmail.com>.
Yes, if you want to send a request from camel-http endpoint, you just 
need put the a Sting, InputStream or HttpEntity into to the message 
body, otherwise camel-http endponit may not send right request to the 
service.

Willem

ychawla wrote:
> Hi Habeer,
> Do you need to do the DOM conversions that you are doing:
> 
> Document input = xmlConverter.toDOMDocument(soapMessage);
> exchange.getIn().setBody(input);
> 
> Can't you just set the body to be a string?
> 
> Same with the return message.  That might be tripping something up.  Also,
> are you able to get to your webservice using a browser/basic auth:
> 
> http://localhost:8095/WebServiceTutorial/services/Hello?username=admin&password=admin
> 
> When I was first setting up a web service connection through HTTP, I set up
> a polling folder and result folder and got that working first.  I just made
> the entire soap message in a text editor which it looks like you already
> have.  Then you can set up a simple route to test for web service
> connectivity:
> 
> <from uri="file:/tmp/input"/>
> <to
> uri="http://localhost:8095/WebServiceTutorial/services/Hello?username=admin&password=admin"
> />
> <to uri="file:/tmp/output"/>
> 
> Cheers,
> Yogesh
> 
> 
> Harbeer Kadian wrote:
>> Hi,
>>
>> I deployed a simple webservice on TomCat Server.
>> I created following route to access the webservice using apache camel.
>>
>> from("direct:ProducerUri")
>> .to("http://localhost:8095/WebServiceTutorial/services/Hello?username=admin&password=admin");
>>
>> I created the exchange in the following way
>> String soapMessage = "<soapenv:Envelope
>> xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\"
>> xmlns:tut=\"http://tutorial.com\"><soapenv:Header/><soapenv:Body><tut:sayHello><tut:name>"
>>                 + "Harbeer Kadian" +
>> "</tut:name></tut:sayHello></soapenv:Body></soapenv:Envelope>";
>>             XmlConverter xmlConverter = new XmlConverter();
>>             
>> Document input = xmlConverter.toDOMDocument(soapMessage);
>> exchange.getIn().setBody(input);
>> exchange.setPattern(ExchangePattern.InOut);
>> //added this line after seeing no soapAction found error on Tom Cat Server
>> log
>> exchange.getIn().setHeader("SOAPAction", "");
>> exchange = producerTemplate.send("direct:ProducerUri", exchange);
>> Document output = (Document)exchange.getOut().getBody();
>> System.out.println(output);
>>
>> I am getting null as output.
>> Also on the tom cat server log, no exception is coming.
>>
>> I have no idea how to invoke webservice using http component.
>> Please help me.
>>
>> With Regards
>> Harbeer Kadian
>>
>>
> 


Re: Not able to invoke webservice using http component

Posted by ychawla <pr...@yahoo.com>.
Hi Habeer,
Do you need to do the DOM conversions that you are doing:

Document input = xmlConverter.toDOMDocument(soapMessage);
exchange.getIn().setBody(input);

Can't you just set the body to be a string?

Same with the return message.  That might be tripping something up.  Also,
are you able to get to your webservice using a browser/basic auth:

http://localhost:8095/WebServiceTutorial/services/Hello?username=admin&password=admin

When I was first setting up a web service connection through HTTP, I set up
a polling folder and result folder and got that working first.  I just made
the entire soap message in a text editor which it looks like you already
have.  Then you can set up a simple route to test for web service
connectivity:

<from uri="file:/tmp/input"/>
<to
uri="http://localhost:8095/WebServiceTutorial/services/Hello?username=admin&password=admin"
/>
<to uri="file:/tmp/output"/>

Cheers,
Yogesh


Harbeer Kadian wrote:
> 
> Hi,
> 
> I deployed a simple webservice on TomCat Server.
> I created following route to access the webservice using apache camel.
> 
> from("direct:ProducerUri")
> .to("http://localhost:8095/WebServiceTutorial/services/Hello?username=admin&password=admin");
> 
> I created the exchange in the following way
> String soapMessage = "<soapenv:Envelope
> xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\"
> xmlns:tut=\"http://tutorial.com\"><soapenv:Header/><soapenv:Body><tut:sayHello><tut:name>"
>                 + "Harbeer Kadian" +
> "</tut:name></tut:sayHello></soapenv:Body></soapenv:Envelope>";
>             XmlConverter xmlConverter = new XmlConverter();
>             
> Document input = xmlConverter.toDOMDocument(soapMessage);
> exchange.getIn().setBody(input);
> exchange.setPattern(ExchangePattern.InOut);
> //added this line after seeing no soapAction found error on Tom Cat Server
> log
> exchange.getIn().setHeader("SOAPAction", "");
> exchange = producerTemplate.send("direct:ProducerUri", exchange);
> Document output = (Document)exchange.getOut().getBody();
> System.out.println(output);
> 
> I am getting null as output.
> Also on the tom cat server log, no exception is coming.
> 
> I have no idea how to invoke webservice using http component.
> Please help me.
> 
> With Regards
> Harbeer Kadian
> 
> 

-- 
View this message in context: http://old.nabble.com/Not-able-to-invoke-webservice-using-http-component-tp28001459p28003434.html
Sent from the Camel - Users mailing list archive at Nabble.com.