Как создать службу Mule ESB для HTTP POST, используя пары имя / значение? - PullRequest
2 голосов
/ 21 июля 2010

Мне нужно создать службу mule, которая будет отправлять данные POST в веб-службу, которая ожидает пары имя / значение (не xml), а затем обрабатывать XML-ответ от этой службы. Я не могу найти хороший пример того, как подготовить полезную нагрузку для HTTP POST.

Может ли кто-нибудь привести некоторые идеи или примеры?

Пока что у меня есть (я не знаю, нужен ли PathToTransformerClass):

    <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>

Ответы [ 4 ]

4 голосов
/ 31 июля 2010

Может быть полезно следующее: http://comments.gmane.org/gmane.comp.java.mule.user/29342

Я тоже не могу найти примеров, но похоже, что встроенные HTTP-преобразователи являются

http-ответ-объект-преобразователь A преобразователь, который преобразует HTTP ответ на сообщение мул. Полезная нагрузка может быть строкой, потоком или байтовый массив.

HTTP-ответ-на-строку-трансформатор Преобразует полезную нагрузку HTTP-ответа в строку. Заголовки ответ будет сохранен на сообщение.

объект к HTTP-запроса-трансформер Этот трансформатор создаст действительный HTTP-запрос с использованием текущего сообщения и любые заголовки HTTP, установленные на текущее сообщение.

сообщение к HTTP-ответа-трансформер Этот трансформатор создаст действительный HTTP-ответ с использованием текущего сообщение и любые HTTP-заголовки, установленные на текущее сообщение.

объект-http-запрос-трансформер может быть вашим лучшим выбором; возможно, вы можете создать карту пар ключ-значение и затем преобразовать ее в закодированную форму URL? Не уверен, но надеюсь, это даст вам кое-что для Google.

0 голосов
/ 03 мая 2016

Возможно, вы можете попробовать использовать Object-to-http-request-transformer, поскольку этот преобразователь создаст действительный HTTP-запрос, используя полученное в данный момент сообщение и любые HTTP-заголовки, установленные в текущем сообщении. Никогда не пробовал, но это единственный трансформатор, который я могу вспомнить после прочтения твоего запроса ... надеюсь, это сработает ..: D

0 голосов
/ 18 марта 2013

1) Пусть variables=<map><entry><string>idEvent_Type</string><string>1</string></entry></map>&options=user:admin

быть телом карты для отправки в виде HTTP-запроса.

2) URL кодирует его (например, используя http://meyerweb.com/eric/tools/dencoder/)

которые производят:

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) затем создайте преобразователь Мул-набор-полезная нагрузка:

<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) затем создайте конечную точку HTTP Mule:

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

и это работает

0 голосов
/ 30 июля 2010

Вы спрашиваете о том, как взять XML и создать пары ключ-значение для отправки по HTTP? Для этого вы можете использовать преобразователь XLST, где в XSL вы устанавливаете вывод метода как текст.

...