Hi Harm,
Here is how you could do it. You need to set two properties (at the
axis2 scope), The following is a sample config
<?xml version="1.0" encoding="UTF-8"?>
<syn:definitions xmlns:syn="http://ws.apache.org/ns/synapse">
<syn:registry provider="org.wso2.esb.registry.ESBRegistry">
<syn:parameter name="root">file:registry/</syn:parameter>
</syn:registry>
<syn:proxy name="RESTProxy" startOnLoad="true">
<syn:target>
<syn:endpoint name="RESTEndpoint">
<syn:address
uri="http://localhost:7763/services/keith/test/foo" format="pox"/>
</syn:endpoint>
<syn:inSequence>
<syn:property name="messageType"
value="application/x-www-form-urlencoded" scope="axis2"/>
<syn:property name="HTTP_METHOD" value="post"
scope="axis2"/>
</syn:inSequence>
</syn:target>
</syn:proxy>
<syn:sequence name="main">
<syn:send/>
</syn:sequence>
<syn:sequence name="fault">
<syn:log/>
</syn:sequence>
</syn:definitions>
Sample messages are:
Request coming into ESB:
POST /soap/RESTProxy/mediate HTTP/1.1
Content-Type: application/soap+xml; charset=UTF-8; action="urn:anonOutInOp"
User-Agent: WSO2 Mashup Server - Version 1.5.1
Host: 127.0.0.1
Content-Length: 191
<?xml version='1.0' encoding='UTF-8'?>
<soapenv:Envelope
xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope">
<soapenv:Body>
<foo>
<param>keith</param>
</foo>
</soapenv:Body>
</soapenv:Envelope>
Message Sent out by ESB:
POST http://localhost:7763/services/keith/test/foo HTTP/1.1
Host: 127.0.0.1
Content-Type: application/x-www-form-urlencoded;
charset=UTF-8;action="urn:anonOutInOp";
Transfer-Encoding: chunked
Connection: Keep-Alive
User-Agent: Synapse-HttpComponents-NIO
b
param=keith
0
Thanks,
Keith.
Harm Verhagen wrote:
I'm trying to figure out how to call a legacy HTTP interface from
the esb bus.
It expects an URL: http://host/issue?voucher='xml
<http://host/issue?voucher=%27xml> document' with an http POST.
sequence:
1) receive a soap request (proxy)
2) xlst mediator (builds the xml document to be posted).
3) then a POX endpoint with URl http://host/issue
1. The message send to the server however doesn't have
"Content-Length:" set.
2. The start of the http POST part "voucher=" is missing.
3. Also It isn't Content-Type: application/x-www-form-urlencoded but
rather application/xml; charset=UTF-8
(It can be www-form-urlencoded... with REST/GET but then its not a
POST...)
Any idea how I can make it application/x-www-form-urlencoded, and
with the voucher= parameter.
*example of a working (without esb) call*
POST /vts/issue HTTP/1.1
Authorization: Basic XXXXXXXXXXXXXXXXXXXXXXXXXXX
User-Agent: Jakarta Commons-HttpClient/3.1
Host: XX.XX.XX
Cookie: $Version=0; JSESSIONID=16ami6ulq3mqr; $Path=/vts
Content-Length: 358
Content-Type: application/x-www-form-urlencoded
voucher=%3C%3Fxml+version%3D%221.0%22+encoding%3D%22UTF-8%22%3F%3E%0A%3CVoucher+xmlns%3D%22urn%3Aietf%3Aparams%3Axml%3Ans%3Avts-issue%22+title%3D%22dfdadfdsfsa%22+key%3D%221233455%22+ean8%3D%221233455%22%3E%3CDescription%3Egsfdgfdgf%3C%2FDescription%3E%3CIssuer+name%3D%22op%22%2F%3E%3CHolder+phone-number%3D%22%2B31655325465%22%2F%3E%3C%2FVoucher%3E
*What I got now*
POST http://192.168.6.108:100/vts/issue?voucher= HTTP/1.1
Host: XX.XX.XX.XX
Authorization: Basic XXXXXXXXXXXXXXXXXXXXXXX
SOAPAction: ""
Content-Type: application/xml; charset=UTF-8
Transfer-Encoding: chunked
Connection: Keep-Alive
User-Agent: Synapse-HttpComponents-NIO
d7
<Voucher xmlns="urn:ietf:params:xml:ns:vts-issue" ean8="123456"
key="123456" title="Hier is uw ticket">
<Description>Bla</Description>
<Issuer name="op" />
<Holder email="[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>" />
</Voucher>
0
Regards,
Harm
------------------------------------------------------------------------
_______________________________________________
Esb-java-user mailing list
[email protected]
http://mailman.wso2.org/cgi-bin/mailman/listinfo/esb-java-user
_______________________________________________
Esb-java-user mailing list
[email protected]
http://mailman.wso2.org/cgi-bin/mailman/listinfo/esb-java-user