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

Reply via email to