2017-07-25 29 views
-3

我是wso2中的新手,並且有一些小問題。我已經在這裏問過,如何進行這種轉換,並且能夠在另一個時刻這樣做。但現在我試圖做同樣的通過對棧溢出代碼:我無法在XML中轉換json

<?xml version="1.0" encoding="UTF-8"?> 
<api context="/Test" name="JsonToXmlApi" xmlns="http://ws.apache.org/ns/synapse"> 
    <resource methods="POST" uri-template="/xml/"> 
     <inSequence> 
      <property name="messageType" scope="axis2" type="STRING" value="text/xml"/> 
      <header action="remove" name="To" scope="default"/> 
      <property name="RESPONSE" scope="default" type="STRING" value="true"/> 
      <send/> 
     </inSequence> 
     <outSequence/> 
     <faultSequence/> 
    </resource> 
</api> 

並且與發送相同的請求,什麼之前被教導:

enter image description here

但現在我接受這個錯誤:

ERROR - PassThroughHttpSender Failed to submit the response 
org.apache.axis2.AxisFault: Can not output XML declaration, after other output has already been done. 
     at org.apache.axis2.AxisFault.makeFault(AxisFault.java:430) 
     at org.apache.axis2.transport.http.SOAPMessageFormatter.writeTo(SOAPMessageFormatter.java:78) 
     at org.apache.synapse.transport.passthru.PassThroughHttpSender.submitResponse(PassThroughHttpSender.java:555) 
     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.rest.Resource.process(Resource.java:343) 
     at org.apache.synapse.rest.API.process(API.java:399) 
     at org.apache.synapse.rest.RESTRequestHandler.apiProcess(RESTRequestHandler.java:123) 
     at org.apache.synapse.rest.RESTRequestHandler.dispatchToAPI(RESTRequestHandler.java:101) 
     at org.apache.synapse.rest.RESTRequestHandler.process(RESTRequestHandler.java:69) 
     at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage(Axis2SynapseEnvironment.java:304) 
     at org.apache.synapse.core.axis2.SynapseMessageReceiver.receive(SynapseMessageReceiver.java:75) 
     at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180) 
     at org.apache.synapse.transport.passthru.ServerWorker.processNonEntityEnclosingRESTHandler(ServerWorker.java:325) 
     at org.apache.synapse.transport.passthru.ServerWorker.processEntityEnclosingRequest(ServerWorker.java:371) 
     at org.apache.synapse.transport.passthru.ServerWorker.run(ServerWorker.java:151) 
     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:745) 
Caused by: javax.xml.stream.XMLStreamException: Can not output XML declaration, after other output has already been done. 
     at com.ctc.wstx.sw.BaseStreamWriter.throwOutputError(BaseStreamWriter.java:1522) 
     at com.ctc.wstx.sw.BaseStreamWriter.reportNwfStructure(BaseStreamWriter.java:1551) 
     at com.ctc.wstx.sw.BaseStreamWriter.doWriteStartDocument(BaseStreamWriter.java:650) 
     at com.ctc.wstx.sw.BaseStreamWriter.writeStartDocument(BaseStreamWriter.java:638) 
     at com.ctc.wstx.sw.BaseStreamWriter.writeStartDocument(BaseStreamWriter.java:626) 
     at org.apache.axiom.om.impl.MTOMXMLStreamWriter.writeStartDocument(MTOMXMLStreamWriter.java:277) 
     at org.apache.synapse.commons.json.JsonDataSource.serialize(JsonDataSource.java:88) 
     at org.apache.axiom.om.impl.llom.OMSourcedElementImpl.internalSerialize(OMSourcedElementImpl.java:691) 
     at org.apache.axiom.om.impl.util.OMSerializerUtil.serializeChildren(OMSerializerUtil.java:562) 
     at org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.java:875) 
     at org.apache.axiom.soap.impl.llom.SOAPEnvelopeImpl.serializeInternally(SOAPEnvelopeImpl.java:283) 
     at org.apache.axiom.soap.impl.llom.SOAPEnvelopeImpl.internalSerialize(SOAPEnvelopeImpl.java:245) 
     at org.apache.axiom.om.impl.llom.OMSerializableImpl.serializeAndConsume(OMSerializableImpl.java:193) 
     at org.apache.axis2.transport.http.SOAPMessageFormatter.writeTo(SOAPMessageFormatter.java:74) 
     ... 24 more 
[2017-07-25 15:35:50,646] ERROR - Axis2Sender Accept:*/*,Accept-Encoding:gzip, deflate, br,Accept-Language:pt-BR,pt;q=0.8,en-US;q=0.6,en;q=0.4,Cache-Control:no-cache,Content-Type:application/soap+xml,Host:localhost:8280,Origin:chrome-extension://fhbjgbiflinjbdggehcddcbncdddomop,Postman-Token:89253418-6c05-c959-5e21-2ce7555e0cb6,<?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body><jsonObject><location_response><name>cafe</name><tags>dsdsd</tags></location_response></jsonObject></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:613) 
     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.rest.Resource.process(Resource.java:343) 
     at org.apache.synapse.rest.API.process(API.java:399) 
     at org.apache.synapse.rest.RESTRequestHandler.apiProcess(RESTRequestHandler.java:123) 
     at org.apache.synapse.rest.RESTRequestHandler.dispatchToAPI(RESTRequestHandler.java:101) 
     at org.apache.synapse.rest.RESTRequestHandler.process(RESTRequestHandler.java:69) 
     at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage(Axis2SynapseEnvironment.java:304) 
     at org.apache.synapse.core.axis2.SynapseMessageReceiver.receive(SynapseMessageReceiver.java:75) 
     at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180) 
     at org.apache.synapse.transport.passthru.ServerWorker.processNonEntityEnclosingRESTHandler(ServerWorker.java:325) 
     at org.apache.synapse.transport.passthru.ServerWorker.processEntityEnclosingRequest(ServerWorker.java:371) 
     at org.apache.synapse.transport.passthru.ServerWorker.run(ServerWorker.java:151) 
     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:745) 
Caused by: org.apache.axis2.AxisFault: Can not output XML declaration, after other output has already been done. 
     at org.apache.axis2.AxisFault.makeFault(AxisFault.java:430) 
     at org.apache.axis2.transport.http.SOAPMessageFormatter.writeTo(SOAPMessageFormatter.java:78) 
     at org.apache.synapse.transport.passthru.PassThroughHttpSender.submitResponse(PassThroughHttpSender.java:555) 
     at org.apache.synapse.transport.passthru.PassThroughHttpSender.invoke(PassThroughHttpSender.java:264) 
     ... 22 more 
Caused by: javax.xml.stream.XMLStreamException: Can not output XML declaration, after other output has already been done. 
     at com.ctc.wstx.sw.BaseStreamWriter.throwOutputError(BaseStreamWriter.java:1522) 
     at com.ctc.wstx.sw.BaseStreamWriter.reportNwfStructure(BaseStreamWriter.java:1551) 
     at com.ctc.wstx.sw.BaseStreamWriter.doWriteStartDocument(BaseStreamWriter.java:650) 
     at com.ctc.wstx.sw.BaseStreamWriter.writeStartDocument(BaseStreamWriter.java:638) 
     at com.ctc.wstx.sw.BaseStreamWriter.writeStartDocument(BaseStreamWriter.java:626) 
     at org.apache.axiom.om.impl.MTOMXMLStreamWriter.writeStartDocument(MTOMXMLStreamWriter.java:277) 
     at org.apache.synapse.commons.json.JsonDataSource.serialize(JsonDataSource.java:88) 
     at org.apache.axiom.om.impl.llom.OMSourcedElementImpl.internalSerialize(OMSourcedElementImpl.java:691) 
     at org.apache.axiom.om.impl.util.OMSerializerUtil.serializeChildren(OMSerializerUtil.java:562) 
     at org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.java:875) 
     at org.apache.axiom.soap.impl.llom.SOAPEnvelopeImpl.serializeInternally(SOAPEnvelopeImpl.java:283) 
     at org.apache.axiom.soap.impl.llom.SOAPEnvelopeImpl.internalSerialize(SOAPEnvelopeImpl.java:245) 
     at org.apache.axiom.om.impl.llom.OMSerializableImpl.serializeAndConsume(OMSerializableImpl.java:193) 
     at org.apache.axis2.transport.http.SOAPMessageFormatter.writeTo(SOAPMessageFormatter.java:74) 
     ... 24 more 

我已經搜查了互聯網和計算器,但沒有一個決議使用了這個問題,在我的案件告破。 如果有人可以幫助我,我會保持相當感激。

謝謝大家。

+0

哪個版本的ESB或API,您使用? –

+0

我試着用wso2 esb 5.0.0和wso2ei 6.1.1。兩人都有同樣的錯誤。 – FelipeF

+0

確保內容類型設置正確,並檢查是否存在任何REST客戶端問題。您在此處發佈的示例API應該可以正常工作。 –

回答

-1

我可以沒有錯誤地得到你的api的響應。嘗試使用API​​中的「application/xml」而不是「text/xml」。

<property name="messageType" value="application/xml" scope="axis2" type="STRING"/> 
+0

你好Rajjaz。謝謝你的幫助,我嘗試了你從我身上傳過來的東西,但不起作用。通過鏈接:'http:// localhost:8280/Test/xml',錯誤和'http:// localhost:8280/application/xml'是一樣的,我沒有收到迴應,請求應該是在cmd中。我嘗試了這兩種,因爲我不確定正確的方法。 – FelipeF

+0

你好Rajjaz。謝謝你的幫助,我找到了解決辦法,我的問題是我改變了API的代碼,我忘了檢查工件。我現在是一個錯誤的轉儲,但有時候我會在開始時犯這樣的事情。感謝病人。 – FelipeF