Your API should be as.
<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> * <property name="FORCE_HTTP_1.0" value="true" scope="axis2"></property>* * <property name="DISABLE_CHUNKING" value="true" 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> <payloadFactory media-type="xml"> <format> <Temp xmlns="">$1</Temp> </format> <args> <arg xmlns:foo="http://www.w3schools.com/webservices/" evaluator="xml" expression="//foo:CelsiusToFahrenheitResponse/foo:CelsiusToFahrenheitResult"></arg> </args> </payloadFactory> <send></send> </outSequence> </resource> </api> xxx-MacBook-Pro:bin dushan$ curl -i -POST -H 'Accept: application/json' -H 'Content-Type:application/json' -d '{"celsius":12}' http://192.168.56.1:8281/temp HTTP/1.1 200 OK X-AspNet-Version: 4.0.30319 Content-Type: application/json X-Powered-By: ASP.NET Cache-Control: private, max-age=0,public Date: Fri, 06 Feb 2015 17:19:20 GMT Server: WSO2-PassThrough-HTTP Transfer-Encoding: chunked {"Temp":53.6}xxx-xxx-Pro:bin xx$ On Thu, Feb 5, 2015 at 1:10 AM, Uvindra Dias Jayasinha <[email protected]> wrote: > Thanks Sampath and Asanka, > > Tried both your suggestions and now Im getting different exception > > RelayUtils Error while building Passthrough stream > org.apache.axiom.om.OMException: javax.xml.stream.XMLStreamException: > ParseError at [row,col]:[3,68] > Message: DOCTYPE is not allowed > at > org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:296) > at > org.apache.axiom.om.impl.llom.OMDocumentImpl.getOMDocumentElement(OMDocumentImpl.java:109) > at > org.apache.axiom.om.impl.builder.StAXOMBuilder.getDocumentElement(StAXOMBuilder.java:570) > at > org.apache.axiom.om.impl.builder.StAXOMBuilder.getDocumentElement(StAXOMBuilder.java:566) > at > org.apache.synapse.transport.passthru.util.DeferredMessageBuilder.getDocument(DeferredMessageBuilder.java:129) > 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:298) > at > org.apache.synapse.rest.RESTRequestHandler.dispatchToAPI(RESTRequestHandler.java:76) > at > org.apache.synapse.rest.RESTRequestHandler.process(RESTRequestHandler.java:50) > at > org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage(Axis2SynapseEnvironment.java:220) > at > org.apache.synapse.core.axis2.SynapseCallbackReceiver.handleMessage(SynapseCallbackReceiver.java:488) > at > org.apache.synapse.core.axis2.SynapseCallbackReceiver.receive(SynapseCallbackReceiver.java:170) > at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180) > at > org.apache.synapse.transport.passthru.ClientWorker.run(ClientWorker.java:225) > 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: javax.xml.stream.XMLStreamException: ParseError at > [row,col]:[3,68] > Message: DOCTYPE is not allowed > at > com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl.next(XMLStreamReaderImpl.java:594) > at > org.apache.axiom.util.stax.wrapper.XMLStreamReaderWrapper.next(XMLStreamReaderWrapper.java:225) > at > org.apache.axiom.util.stax.dialect.DisallowDoctypeDeclStreamReaderWrapper.next(DisallowDoctypeDeclStreamReaderWrapper.java:34) > at > org.apache.axiom.util.stax.wrapper.XMLStreamReaderWrapper.next(XMLStreamReaderWrapper.java:225) > at > org.apache.axiom.util.stax.dialect.SJSXPStreamReaderWrapper.next(SJSXPStreamReaderWrapper.java:138) > at > org.apache.axiom.om.impl.builder.StAXOMBuilder.parserNext(StAXOMBuilder.java:681) > at > org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:214) > ... 22 more > 11:30:13,251 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:298) > at > org.apache.synapse.rest.RESTRequestHandler.dispatchToAPI(RESTRequestHandler.java:76) > at > org.apache.synapse.rest.RESTRequestHandler.process(RESTRequestHandler.java:50) > at > org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage(Axis2SynapseEnvironment.java:220) > at > org.apache.synapse.core.axis2.SynapseCallbackReceiver.handleMessage(SynapseCallbackReceiver.java:488) > at > org.apache.synapse.core.axis2.SynapseCallbackReceiver.receive(SynapseCallbackReceiver.java:170) > at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180) > at > org.apache.synapse.transport.passthru.ClientWorker.run(ClientWorker.java:225) > 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: org.apache.axiom.om.OMException: > javax.xml.stream.XMLStreamException: ParseError at [row,col]:[3,68] > Message: DOCTYPE is not allowed > at > org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:296) > at > org.apache.axiom.om.impl.llom.OMDocumentImpl.getOMDocumentElement(OMDocumentImpl.java:109) > at > org.apache.axiom.om.impl.builder.StAXOMBuilder.getDocumentElement(StAXOMBuilder.java:570) > at > org.apache.axiom.om.impl.builder.StAXOMBuilder.getDocumentElement(StAXOMBuilder.java:566) > at > org.apache.synapse.transport.passthru.util.DeferredMessageBuilder.getDocument(DeferredMessageBuilder.java:129) > at > org.apache.synapse.transport.passthru.util.RelayUtils.builldMessage(RelayUtils.java:107) > ... 17 more > Caused by: javax.xml.stream.XMLStreamException: ParseError at > [row,col]:[3,68] > Message: DOCTYPE is not allowed > at > com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl.next(XMLStreamReaderImpl.java:594) > at > org.apache.axiom.util.stax.wrapper.XMLStreamReaderWrapper.next(XMLStreamReaderWrapper.java:225) > at > org.apache.axiom.util.stax.dialect.DisallowDoctypeDeclStreamReaderWrapper.next(DisallowDoctypeDeclStreamReaderWrapper.java:34) > at > org.apache.axiom.util.stax.wrapper.XMLStreamReaderWrapper.next(XMLStreamReaderWrapper.java:225) > at > org.apache.axiom.util.stax.dialect.SJSXPStreamReaderWrapper.next(SJSXPStreamReaderWrapper.java:138) > at > org.apache.axiom.om.impl.builder.StAXOMBuilder.parserNext(StAXOMBuilder.java:681) > at > org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:214) > ... 22 more > > Any ideas? > > > On 5 February 2015 at 07:48, Asanka Dissanayake <[email protected]> wrote: > >> 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 <[email protected]> >> 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 >>> [email protected] >>> http://wso2.org/cgi-bin/mailman/listinfo/dev >>> >>> >> >> >> -- >> >> >> *Asanka DissanayakeSoftware Engineer* >> *WSO2 Inc. - lean . enterprise . middleware | wso2.com >> <http://wso2.com/>* >> >> *email: [email protected] <[email protected]>, blog: >> cyberwaadiya.blogspot.com >> <http://cyberwaadiya.blogspot.com>, asankastechtalks.wordpress.com >> <http://asankastechtalks.wordpress.com> mobile: +94 71 8373821* >> > > > > -- > Regards, > Uvindra > > Mobile: 777733962 > > _______________________________________________ > Dev mailing list > [email protected] > http://wso2.org/cgi-bin/mailman/listinfo/dev > > -- Dushan Abeyruwan | Associate Tech Lead Integration Technologies Team PMC Member Apache Synpase WSO2 Inc. http://wso2.com/ Blog:http://dushansview.blogspot.com/ Mobile:(0094)713942042
_______________________________________________ Dev mailing list [email protected] http://wso2.org/cgi-bin/mailman/listinfo/dev
