2015-05-21 2 views
0

им работать с этим прокси:WSO2 DOCTYPE не допускается вызова REST API

<?xml version="1.0" encoding="UTF-8"?> 
<proxy xmlns="http://ws.apache.org/ns/synapse" 
     name="PubMedDataProxy" 
     transports="https,http" 
     statistics="disable" 
     trace="disable" 
     startOnLoad="true"> 
    <target> 
     <inSequence> 
     <call> 
      <endpoint> 
       <http method="get" 
       uri-template="http://eutils.ncbi.nlm.nih.gov/entrez/eutils/elink.fcgi?dbfrom=omim&amp;Mdb=pubmed&amp;id=230900"/> 
      </endpoint> 
     </call> 
     <log level="custom"> 
      <property name="MyLOg" expression="//eLinkResult/DbFrom/text()"/> 
     </log> 
     <respond/> 
     </inSequence> 
     <outSequence> 
     <send/> 
     </outSequence> 
    </target> 
    <description/> 
</proxy> 

я получаю это исключение:

TID: [0] [ESB] [2015-05-21 13:45:34,838] ERROR {org.apache.synapse.transport.passthru.util.RelayUtils} - Error while building Passthrough stream {org.apache.synapse.transport.passthru.util.RelayUtils} 
org.apache.axiom.om.OMException: javax.xml.stream.XMLStreamException: ParseError at [row,col]:[2,142] 
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.axis2.builder.ApplicationXMLBuilder.processDocument(ApplicationXMLBuilder.java:81) 
    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.base.SequenceMediator.mediate(SequenceMediator.java:239) 
    at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.mediateFromContinuationStateStack(Axis2SynapseEnvironment.java:556) 
    at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage(Axis2SynapseEnvironment.java:198) 
    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.runWorker(ThreadPoolExecutor.java:1145) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: javax.xml.stream.XMLStreamException: ParseError at [row,col]:[2,142] 
Message: DOCTYPE is not allowed 
... 

Calling службу в обычном клиенте REST я получить результат XML withouth любой проблема.

Проблема возникла, когда прокси попытается проанализировать полученный xml. Действительно, удаление посредника журнала с свойством внутри прокси возвращает результат правильно. Что мне не хватает?

ответ

1

Добавьте следующие прокси-сервера:

<parameter name="ApplicationXMLBuilder.allowDTD">true</parameter> 
Смежные вопросы