2010-07-20 21 views
2

J'ai besoin de créer un service mule qui POSTERa des données à un service Web qui attend des paires nom/valeur (pas xml), puis traiter la réponse XML à partir de ce service. Je ne peux pas trouver un bon exemple sur la façon de préparer la charge utile pour un POST http.Comment créer un service ESB Mule pour HTTP POST en utilisant des paires nom/valeur?

Quelqu'un peut-il donner un aperçu ou des exemples?

Ce que j'ai à ce jour est (je ne sais pas si « PathToTransformerClass » est nécessaire):

<service name="myService"> 
     <inbound> 
      <vm:inbound-endpoint path="myService.request" synchronous="true"> 
       <custom-transformer class="PathToTransformerClass" /> 
      </vm:inbound-endpoint> 
     </inbound> 
     <outbound> 
      <pass-through-router> 
       <http:outbound-endpoint address="URIofWebServiceToPostTo" method="POST" synchronous="true"> 
        <response-transformers> 
         <custom-transformer class="PathToClassToProcessTheResponse" /> 
        </response-transformers> 
       </http:outbound-endpoint> 
      </pass-through-router> 
     </outbound> 
    </service> 

Répondre

4

qui suit peut être utile: http://comments.gmane.org/gmane.comp.java.mule.user/29342

Je ne peux pas trouver des exemples non plus, mais il semble que le haut-HTTP transformers sont

http-réponse à objet transformateur A transformateur qui convertit une réponse HTTP à un message Mule. La charge utile peut être une chaîne, un flux ou un tableau d'octets .

http-response-to-string-transformer Convertit une charge de réponse HTTP en une chaîne. Les en-têtes de la réponse seront conservés dans le message .

objet à http demande transformateur Ce transformateur va créer une demande HTTP valide en utilisant le message en cours et les en-têtes HTTP définies sur le message en cours.

message à http-réponse transformateur Ce transformateur va créer une réponse HTTP valide en utilisant le message en cours et les en-têtes HTTP définies sur le message en cours.

objet-à-http-demande-transformateur pourrait être votre meilleur pari; peut-être pouvez-vous créer une carte de paires clé-valeur, puis la convertir en forme codée URL? Pas sûr mais j'espère que cela vous donne quelques choses à Google.

0

Demandez-vous sur la façon de prendre XML et de créer des paires de valeurs clés pour envoyer via HTTP? Pour cela, vous pouvez utiliser un transformateur XLST où, dans le XSL, vous définissez la sortie de la méthode comme étant du texte.

0

1) Soit variables=<map><entry><string>idEvent_Type</string><string>1</string></entry></map>&options=user:admin

être le corps Carte pour poster comme requête HTTP.

2) URL l'encoder (par ex.en utilisant http://meyerweb.com/eric/tools/dencoder/)

qui produisent:

variables%3D%3Cmap%3E%3Centry%3E%3Cstring%3EidEvent_Type%3C%2Fstring%3E%3Cstring%3E1%3C%2Fstring%3E%3C%2Fentry%3E%3C%2Fmap%3E%26options%3Duser%3Aadmin 

3) puis créer un transformateur Mule-charge utile set:

<set-payload value="variables%3D%3Cmap%3E%3Centry%3E%3Cstring%3EidEvent_Type%3C%2Fstring%3E%3Cstring%3E1%3C%2Fstring%3E%3C%2Fentry%3E%3C%2Fmap%3E%26options%3Duser%3Aadmin 
" doc:name="Set playload"/> 

4) puis créer un point de terminaison HTTP Mule:

<http:outbound-endpoint exchange-pattern="request-response" host="..." port="..." path="..." user="..." password="..." contentType="application/x-www-form-urlencoded" doc:name="POSTHTTPRequest"/> 

et cela fonctionne

0

Peut-être que U peut essayer d'utiliser Object-to-http-request-transformer car ce transformateur créera une requête HTTP valide en utilisant le message actuellement reçu et tous les en-têtes HTTP définis sur le message courant. Je n'ai jamais essayé, mais c'est le seul transformateur que je peux obtenir dans mon esprit après avoir lu votre requête ... espérons que cela fonctionne ..: D

+0

vous pouvez poster votre code, il sera utile de connaître votre idée –