Hi Priya, It seems like you are getting a SOAP response with an empty body(<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">< soapenv:Body/></soapenv:Envelope>) so that the JSON conversion fails. What is the requirement here to convert an empty SOAP message into a JSON? If you are getting an empty SOAP body for a delete operation, there's no point of converting it to a JSON, instead, you can return an HTTP status code(200).
On Fri, Nov 17, 2017 at 10:32 AM, Piriya Sivalingam <[email protected]> wrote: > Hi, > > I am seeing an error in ESB 5.0.0 when making SOAP to JSON conversion via > a proxy service. When I invoke the proxy using following curl command the > operation was successful, but I could see some errors logged in the console. > > When I search for the error, I found a solution given in [1]. When I try > it, the error got resolved. But still, I am getting a SOAP payload as the > response message. > > Here is my proxy service. > > <?xml version="1.0" encoding="UTF-8"?> > <proxy xmlns="http://ws.apache.org/ns/synapse" > name="newproxy1.2" > startOnLoad="true" > statistics="disable" > trace="disable" > transports="http,https"> > <target> > <inSequence> > <header name="Authorization" > scope="transport" > value="Basic cGlyaXlhOnBpcml5YTEyMw=="/> > <log> > <property expression="$axis2:HTTP_METHOD" name="httpmethod > === "/> > </log> > <switch source="$axis2:HTTP_METHOD"> > <case regex="^(.*(GET)).*$"> > <payloadFactory media-type="xml"> > <format> > <soapenv:Envelope xmlns:soapenv="http://schemas. > xmlsoap.org/soap/envelope/" > xmlns:ser="http://service. > sample.ninewells.com"> > <soapenv:Header> > <abc>2611</abc> > </soapenv:Header> > <soapenv:Body> > <ser:readNinewells> > <ser:patientId>$1</ser:patientId> > </ser:readNinewells> > </soapenv:Body> > </soapenv:Envelope> > </format> > <args> > <arg xmlns:ns="http://org.apache.synapse/xsd" > evaluator="xml" > expression="$url:patientId"/> > </args> > </payloadFactory> > <property name="SOAPAction" > scope="transport" > type="STRING" > value="urn:readNinewells"/> > <header name="Action" scope="default" > value="urn:readNinewells"/> > <property name="messageType" > scope="axis2" > type="STRING" > value="application/xml"/> > <send> > <endpoint> > <address format="soap11" > uri="https://<IP>:<PORT>/services/ > NinewellsPatientService"/> > </endpoint> > </send> > </case> > <case regex="^(.*(DELETE)).*$"> > <payloadFactory media-type="xml"> > <format> > <soapenv:Envelope xmlns:soapenv="http://schemas. > xmlsoap.org/soap/envelope/" > xmlns:ser="http://service. > sample.ninewells.com"> > <soapenv:Header> > <abc>2611</abc> > </soapenv:Header> > <soapenv:Body> > <ser:deleteNinewells> > <ser:patientId>$1</ser:patientId> > </ser:deleteNinewells> > </soapenv:Body> > </soapenv:Envelope> > </format> > <args> > <arg xmlns:ns="http://org.apache.synapse/xsd" > evaluator="xml" > expression="$url:patientId"/> > </args> > </payloadFactory> > <property name="SOAPAction" > scope="transport" > type="STRING" > value="urn:deleteNinewells"/> > <header name="Action" scope="default" > value="urn:deleteNinewells"/> > <property name="messageType" > scope="axis2" > type="STRING" > value="application/xml"/> > <send> > <endpoint> > <address format="soap11" > uri="https://<IP>:<PORT>/services/ > NinewellsPatientService"/> > </endpoint> > </send> > </case> > <default/> > </switch> > </inSequence> > <outSequence> > <property name="messageType" > scope="axis2" > type="STRING" > value="application/json"/> > <send/> > </outSequence> > </target> > <description/> > </proxy> > > My curl command is curl -X DELETE http://piriya-ThinkPad-X1- > Carbon-5th:8284/services/newproxy1.2?patientId=1031 > > The exception in the console is: > > ERROR - JsonUtil #writeAsJson. Payload could not be written as JSON. > MessageID: urn:uuid:752a8cd2-03a7-4564-8645-7652db5c8666 > [2017-11-17 10:06:30,700] ERROR - PassThroughHttpSender Failed to submit > the response > org.apache.axis2.AxisFault: Payload could not be written as JSON. > at org.apache.synapse.commons.json.JsonUtil.writeAsJson(JsonUtil.java:264) > at org.apache.synapse.commons.json.JsonStreamFormatter. > writeTo(JsonStreamFormatter.java:61) > at org.apache.synapse.transport.passthru.PassThroughHttpSender. > submitResponse(PassThroughHttpSender.java:566) > at org.apache.synapse.transport.passthru.PassThroughHttpSender.invoke( > PassThroughHttpSender.java:264) > at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:442) > at org.apache.synapse.core.axis2.Axis2Sender.sendBack( > Axis2Sender.java:222) > at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.send( > Axis2SynapseEnvironment.java:531) > at org.apache.synapse.mediators.builtin.SendMediator.mediate( > SendMediator.java:118) > at org.apache.synapse.mediators.AbstractListMediator.mediate( > AbstractListMediator.java:97) > at org.apache.synapse.mediators.AbstractListMediator.mediate( > AbstractListMediator.java:59) > at org.apache.synapse.mediators.base.SequenceMediator.mediate( > SequenceMediator.java:158) > at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage( > Axis2SynapseEnvironment.java:337) > at org.apache.synapse.core.axis2.SynapseCallbackReceiver.handleMessage( > SynapseCallbackReceiver.java:560) > at org.apache.synapse.core.axis2.SynapseCallbackReceiver.receive( > SynapseCallbackReceiver.java:194) > at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180) > at org.apache.synapse.transport.passthru.ClientWorker.run( > ClientWorker.java:260) > at org.apache.axis2.transport.base.threads.NativeWorkerPool$ > 1.run(NativeWorkerPool.java:172) > at java.util.concurrent.ThreadPoolExecutor.runWorker( > ThreadPoolExecutor.java:1142) > at java.util.concurrent.ThreadPoolExecutor$Worker.run( > ThreadPoolExecutor.java:617) > at java.lang.Thread.run(Thread.java:748) > [2017-11-17 10:06:30,702] ERROR - Axis2Sender > Content-Type:application/json,<?xml version='1.0' > encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://schemas. > xmlsoap.org/soap/envelope/"><soapenv:Body/></soapenv:Envelope> Unexpected > error sending message back > org.apache.axis2.AxisFault: Failed to submit the response > at org.apache.synapse.transport.passthru.PassThroughHttpSender. > handleException(PassThroughHttpSender.java:624) > at org.apache.synapse.transport.passthru.PassThroughHttpSender.invoke( > PassThroughHttpSender.java:266) > at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:442) > at org.apache.synapse.core.axis2.Axis2Sender.sendBack( > Axis2Sender.java:222) > at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.send( > Axis2SynapseEnvironment.java:531) > at org.apache.synapse.mediators.builtin.SendMediator.mediate( > SendMediator.java:118) > at org.apache.synapse.mediators.AbstractListMediator.mediate( > AbstractListMediator.java:97) > at org.apache.synapse.mediators.AbstractListMediator.mediate( > AbstractListMediator.java:59) > at org.apache.synapse.mediators.base.SequenceMediator.mediate( > SequenceMediator.java:158) > at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage( > Axis2SynapseEnvironment.java:337) > at org.apache.synapse.core.axis2.SynapseCallbackReceiver.handleMessage( > SynapseCallbackReceiver.java:560) > at org.apache.synapse.core.axis2.SynapseCallbackReceiver.receive( > SynapseCallbackReceiver.java:194) > at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180) > at org.apache.synapse.transport.passthru.ClientWorker.run( > ClientWorker.java:260) > at org.apache.axis2.transport.base.threads.NativeWorkerPool$ > 1.run(NativeWorkerPool.java:172) > at java.util.concurrent.ThreadPoolExecutor.runWorker( > ThreadPoolExecutor.java:1142) > at java.util.concurrent.ThreadPoolExecutor$Worker.run( > ThreadPoolExecutor.java:617) > at java.lang.Thread.run(Thread.java:748) > Caused by: org.apache.axis2.AxisFault: Payload could not be written as > JSON. > at org.apache.synapse.commons.json.JsonUtil.writeAsJson(JsonUtil.java:264) > at org.apache.synapse.commons.json.JsonStreamFormatter. > writeTo(JsonStreamFormatter.java:61) > at org.apache.synapse.transport.passthru.PassThroughHttpSender. > submitResponse(PassThroughHttpSender.java:566) > at org.apache.synapse.transport.passthru.PassThroughHttpSender.invoke( > PassThroughHttpSender.java:264) > > > [1] [Dev] [ESB] JSON to SOAP conversion issue > > Could you please suggest how I can overcome this issue or correct me if I > am wrong? > > Thanks, > Piriya > > > -- > Regards, > > *Piriya Sivalingam* > > *Software Engineer - Support Team* > > *WSO2* > *Mobile : +94 77 8462039 <+94%2077%20846%202039>* > > [image: http://wso2.com/signature] <http://wso2.com/signature> > > > _______________________________________________ > Dev mailing list > [email protected] > http://wso2.org/cgi-bin/mailman/listinfo/dev > > -- Thilini Shanika Senior Software Engineer WSO2, Inc.; http://wso2.com 20, Palmgrove Avenue, Colombo 3 E-mail: [email protected]
_______________________________________________ Dev mailing list [email protected] http://wso2.org/cgi-bin/mailman/listinfo/dev
