Le contenu de l'ESB WSO2 n'est pas autorisé dans une exception Prolog dans une exemplaire d'une surveillance
-
21-12-2019 - |
Question
Je développe un service de proxy avec un service Web SOAP qui effectue du savon pour la conversion de repos, le message est envoyé à un servlet qui réponse avec une chaîne en format plat (non XML), juste une securrence de caractères comme
OIUW|ECHNOWE|RFHQWIUE|FBPQW|EFHAO|IEFH
J'invoque avec l'interface utilisateur du savon et je reçois cette réponse bien, je voudrais maintenant le recevoir dans "SOAP FORMAT", en enveloppant le message dans un savon: corps, j'ai essayé avec un XSLT et avec un médiateur payant, mais dès que j'utilise l'un d'entre eux (même rien faire), je reçois un
[2014-07-31 09:30:41,847] ERROR - RelayUtils Error while building Passthrough stream
org.apache.axiom.om.OMException: javax.xml.stream.XMLStreamException: ParseError at [row,col]:[1,1]
Message: Content is not allowed in prolog.
Qu'est-ce que je fais mal?Comment puis-je obtenir une transformation de message sans cette exception?
Merci!
Mise à jour: Mon proxy à la demande de Ratha
<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
name="SCL3"
transports="http"
startOnLoad="true"
trace="disable">
<description/>
<target>
<inSequence>
<log level="custom">
<property name="MyTrace" value="--- REQUEST ---"/>
</log>
<log level="full"/>
<property name="REST_URL_POSTFIX"
value="x4?msg=x4|0003|0000000021|0|0|0400002081020224849"
scope="axis2"
type="STRING"/>
<property name="HTTP_METHOD" value="GET" scope="axis2" type="STRING"/>
<property name="SOAPAction" scope="default" action="remove"/>
<header name="Action" scope="default" action="remove"/>
<send>
<endpoint>
<address uri="http://localhost:8087/X4" format="pox"/>
</endpoint>
</send>
</inSequence>
<outSequence>
<log level="custom">
<property name="MyTrace" value="--- RESPONSE ---"/>
</log>
<property name="ContentType"
value="application/soap+xml"
scope="transport"
type="STRING"/>
<property name="messageType"
value="application/soap+xml"
scope="transport"
type="STRING"/>
<payloadFactory media-type="xml">
<format>
<a xmlns="">$1</a>
</format>
<args>
<arg value="my value"/>
</args>
</payloadFactory>
<send/>
</outSequence>
</target>
<publishWSDL uri="file:/C:/wso2/wso2esb-4.8.1/repository/workspaces/myproject/SCL3.wsdl"/>
</proxy>
La solution
J'ai vu que mon servlet définit le type de contenu sur "Text / XML" au lieu de "Texte / Plain", je l'ai changé en "Texte / Plain" et tout fonctionne bien maintenant.
donc je déduit que le message d'erreur
"Le contenu n'est pas autorisé dans prolog"
signifie réellement
" Type de contenu inattendu "
Autres conseils
Lorsque vous avez la configuration de la suite suivante, à quoi votre journal imprime?
<outSequence>
<log level="full">
<property name="MyTrace" value="--- RESPONSE ---"/>
</log>
<send/>
</outSequence>