Hi Uvindra, Seems message failing during the building. And it picks the wrong formatter it seems. Set the content header in the curl as follows.
curl -i -POST -H 'Accept: application/json' -H 'Content-Type:application/json' -d '{"celsius":12}' http://<IP Address>:8280/<api context> Thanks, Asanka D On Wed, Feb 4, 2015 at 9:03 PM, Uvindra Dias Jayasinha <uvin...@wso2.com> wrote: > Im trying out Payload and Script mediator functionality to call this SOAP > service, > > > http://www.w3schools.com/webservices/tempconvert.asmx?op=CelsiusToFahrenheit > > > by simulating a REST API using ESB 4.8.1, here is the synapse > configuration I have defined > > > <api xmlns="http://ws.apache.org/ns/synapse" name="tempAPI" > context="/temp"> > <resource methods="POST GET"> > <inSequence> > <log level="custom"> > <property name="IN_MESSAGE" > value=">;;;;;;;>;;;;;;;>;;;;;;;>;;;;;;;>;;;;;;;>;;;;;;;>;;;;;;;>;;;;;;;IN_MESSAGE"></property> > </log> > <property name="messageType" value="application/xml" > scope="axis2"></property> > <payloadFactory media-type="xml"> > <format> > <soapenv:Envelope xmlns:soapenv=" > http://schemas.xmlsoap.org/soap/envelope/" xmlns:web=" > http://www.w3schools.com/webservices/"> > <soapenv:Header></soapenv:Header> > <soapenv:Body> > <web:CelsiusToFahrenheit> > <web:Celsius>$1</web:Celsius> > </web:CelsiusToFahrenheit> > </soapenv:Body> > </soapenv:Envelope> > </format> > <args> > <arg evaluator="json" expression="$.celsius"></arg> > </args> > </payloadFactory> > <send> > <endpoint> > <address uri=" > http://www.w3schools.com/webservices/tempconvert.asmx?op=CelsiusToFahrenheit" > format="soap11"></address> > </endpoint> > </send> > </inSequence> > <outSequence> > <log level="custom"> > <property name="OUT_MESSAGE" > value=">;;;;;;;>;;;;;;;>;;;;;;;>;;;;;;;>;;;;;;;>;;;;;;;>;;;;;;;>;;;;;;;OUT_MESSAGE"></property> > </log> > <property name="messageType" value="application/json" > scope="axis2"></property> > <script language="js">var temp = > mc.getPayloadXML()..*::CelsiusToFahrenheitResponse.CelsiusToFahrenheitResult.toString(); > mc.setPayloadJSON( { > "Temp" : { "Faran" : > temp } });</script> > <send></send> > </outSequence> > </resource> > </api> > > > When I invoke the above using, > > curl -i -POST -H 'Accept: application/json' -d '{"celsius":12}' http://<IP > Address>:8280/<api context> > > I get the following exception, > > 6:53:00,577 RelayUtils Error while building Passthrough stream > java.lang.StringIndexOutOfBoundsException: String index out of range: -1 > at java.lang.String.substring(String.java:1937) > at > org.apache.axis2.builder.XFormURLEncodedBuilder.extractParametersFromRequest(XFormURLEncodedBuilder.java:174) > at > org.apache.axis2.builder.XFormURLEncodedBuilder.processDocument(XFormURLEncodedBuilder.java:112) > at > org.apache.synapse.commons.builders.XFormURLEncodedBuilder.processDocument(XFormURLEncodedBuilder.java:36) > at > org.apache.synapse.transport.passthru.util.DeferredMessageBuilder.getDocument(DeferredMessageBuilder.java:118) > at > org.apache.synapse.transport.passthru.util.RelayUtils.builldMessage(RelayUtils.java:107) > at > org.apache.synapse.transport.passthru.util.RelayUtils.buildMessage(RelayUtils.java:82) > at > org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:68) > at > org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:47) > at > org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:131) > at org.apache.synapse.rest.Resource.process(Resource.java:297) > at org.apache.synapse.rest.API.process(API.java:341) > at > org.apache.synapse.rest.RESTRequestHandler.dispatchToAPI(RESTRequestHandler.java:76) > at > org.apache.synapse.rest.RESTRequestHandler.process(RESTRequestHandler.java:63) > at > org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage(Axis2SynapseEnvironment.java:220) > at > org.apache.synapse.core.axis2.SynapseMessageReceiver.receive(SynapseMessageReceiver.java:83) > at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180) > at > org.apache.synapse.transport.passthru.ServerWorker.processNonEntityEnclosingRESTHandler(ServerWorker.java:344) > at > org.apache.synapse.transport.passthru.ServerWorker.processEntityEnclosingRequest(ServerWorker.java:385) > at > org.apache.synapse.transport.passthru.ServerWorker.run(ServerWorker.java:183) > at > org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172) > at > java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918) > at java.lang.Thread.run(Thread.java:662) > 06:53:00,578 SequenceMediator Error while building message > org.apache.axis2.AxisFault: Error while building Passthrough stream > at > org.apache.synapse.transport.passthru.util.RelayUtils.handleException(RelayUtils.java:236) > at > org.apache.synapse.transport.passthru.util.RelayUtils.builldMessage(RelayUtils.java:111) > at > org.apache.synapse.transport.passthru.util.RelayUtils.buildMessage(RelayUtils.java:82) > at > org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:68) > at > org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:47) > at > org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:131) > at org.apache.synapse.rest.Resource.process(Resource.java:297) > at org.apache.synapse.rest.API.process(API.java:341) > at > org.apache.synapse.rest.RESTRequestHandler.dispatchToAPI(RESTRequestHandler.java:76) > at > org.apache.synapse.rest.RESTRequestHandler.process(RESTRequestHandler.java:63) > at > org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage(Axis2SynapseEnvironment.java:220) > at > org.apache.synapse.core.axis2.SynapseMessageReceiver.receive(SynapseMessageReceiver.java:83) > at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180) > at > org.apache.synapse.transport.passthru.ServerWorker.processNonEntityEnclosingRESTHandler(ServerWorker.java:344) > at > org.apache.synapse.transport.passthru.ServerWorker.processEntityEnclosingRequest(ServerWorker.java:385) > at > org.apache.synapse.transport.passthru.ServerWorker.run(ServerWorker.java:183) > at > org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172) > at > java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918) > at java.lang.Thread.run(Thread.java:662) > Caused by: java.lang.StringIndexOutOfBoundsException: String index out of > range: -1 > at java.lang.String.substring(String.java:1937) > at > org.apache.axis2.builder.XFormURLEncodedBuilder.extractParametersFromRequest(XFormURLEncodedBuilder.java:174) > at > org.apache.axis2.builder.XFormURLEncodedBuilder.processDocument(XFormURLEncodedBuilder.java:112) > at > org.apache.synapse.commons.builders.XFormURLEncodedBuilder.processDocument(XFormURLEncodedBuilder.java:36) > at > org.apache.synapse.transport.passthru.util.DeferredMessageBuilder.getDocument(DeferredMessageBuilder.java:118) > at > org.apache.synapse.transport.passthru.util.RelayUtils.builldMessage(RelayUtils.java:107) > > > Any idea what Im doing wrong? This should be straight forward, Thanks > > -- > Regards, > Uvindra > > Mobile: 777733962 > > > > _______________________________________________ > Dev mailing list > Dev@wso2.org > http://wso2.org/cgi-bin/mailman/listinfo/dev > > -- *Asanka DissanayakeSoftware Engineer* *WSO2 Inc. - lean . enterprise . middleware | wso2.com <http://wso2.com/>* *email: asan...@wso2.com <ruch...@wso2.com>, blog: cyberwaadiya.blogspot.com <http://cyberwaadiya.blogspot.com>, asankastechtalks.wordpress.com <http://asankastechtalks.wordpress.com> mobile: +94 71 8373821*
_______________________________________________ Dev mailing list Dev@wso2.org http://wso2.org/cgi-bin/mailman/listinfo/dev