0
votes

I need to pass photo and access token to back end REST service. Content type

is multipart/form-data I created html form and action is endpoint of esb And I have traced the traffic on the way to ESB [A] and going out from ESB [B]. It seems slide changes on those and I have no idea to fix this. When I send captured traffic on the way to ESB [A] its accepting by back end service. But traffic which going out by ESB[B] is not accepting by back end. Means not recognized the values in boundaries. It says “values empty”

Output on the way to ESB – when this FWD to backend it recognize ==========================================================================

POST /services/postPhotoToAlbumHttpSoap11Endpoint HTTP/1.1

Host: localhost:8280

Connection: keep-alive

Content-Length: 4623

Cache-Control: max-age=0

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8

Origin: null

User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.76 Safari/537.36

Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryPSfmjvLcmpwvN6Gt

Accept-Encoding: gzip,deflate,sdch

Accept-Language: en-US,en;q=0.8

Cookie: menuPanel=visible; menuPanelType=main

X-Forwarded-For: 0:0:0:0:0:0:0:1

------WebKitFormBoundaryPSfmjvLcmpwvN6Gt

Content-Disposition: form-data; name="accessToken"

CAACEdEose0cBALXnbsnFzenjs7ni1bkLYx0Tybmfd4G5CBWifG3VnP9xWQDNT52mCWZA2dTESXYc4aMNOZAHfNUNO0jxV5IZC9PQzjeWBZCHuOOexnzpt5BmNCeZAAFb3juHU2aZAZCNLozkOYcyKUj1IOl2jYzCpTjLdnynqhsDrZCknPC9670N0bOw1cIVUohLh9OBEjqyogZDZD

------WebKitFormBoundaryPSfmjvLcmpwvN6Gt

Content-Disposition: form-data; name="source"; filename="kdinesh_LThumb.jpg"

Content-Type: image/jpeg

ÿØÿà_

Output going OUT from ESB ==========================================================================

POST /10150897830516344/photos HTTP/1.1

Accept-Language: en-US,en;q=0.8

Cookie: menuPanel=visible; menuPanelType=main

Accept-Encoding: gzip,deflate,sdch

X-Forwarded-For: 0:0:0:0:0:0:0:1

Origin: null

Content-Type: multipart/form-data

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8

Cache-Control: max-age=0

Transfer-Encoding: chunked

Host: api.localhost

Connection: Keep-Alive

User-Agent: Synapse-PT-HttpComponents-NIO

X-Forwarded-For: 0:0:0:0:0:0:0:1, 127.0.0.1

1816

--MIMEBoundary_960dd4bb3066b1fff153bc3151e7776b65947ba8dd00425e

Content-Disposition: form-data; name="access_token"

Content-Type: text/plain; charset=US-ASCII

Content-Transfer-Encoding: 8bit

CAACEdEose0cBALXnbsnFzenjs7ni1bkLYx0Tybmfd4G5CBWifG3VnP9xWQDNT52mCWZA2dTESXYc4aMNOZAHfNUNO0jxV5IZC9PQzjeWBZCHuOOexnzpt5BmNCeZAAFb3juHU2aZAZCNLozkOYcyKUj1IOl2jYzCpTjLdnynqhsDrZCknPC9670N0bOw1cIVUohLh9OBEjqyogZDZD

--MIMEBoundary_960dd4bb3066b1fff153bc3151e7776b65947ba8dd00425e

Content-Disposition: form-data; name="source"

Content-Type: text/plain; charset=US-ASCII

Content-Transfer-Encoding: 8bit

/9j/4AAQSkZJRgABAgEAAAAAAAD/2wBDAAUDBAQEAwUEBAQFBQUGBwwIBwcHBw8KCwkMEQ8SEhEPERATFhwXExQaFRARGCEYGhwdHx8fExciJCIeJBweHx7/2wBDAQUFBQcGBw4ICA4eFBEUHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh7/wAARCABvAG8DASIAAhE --MIMEBoundary_960dd4bb3066b1fff153bc3151e7776b65947ba8dd00425e--

0

Proxy

<?xml version="1.0" encoding="UTF-8"?>

<proxy xmlns="http://ws.apache.org/ns/synapse" name="postPhoto"

       transports="https,http" statistics="disable" trace="disable"

       startOnLoad="true">

       <target>



              <inSequence>

                     <property name="accessToken" expression="//accessToken/text()" />

                     <property name="source" expression="//source/text()" />





                     <conn.init>

                           <accessToken>{$ctx:accessToken}</accessToken>

                     </conn.init>



                     <conn.postPhotoToAlbum>

                           <source>{$ctx:source}</source>

                     </conn.postPhotoToAlbum>

                     <respond></respond>

              </inSequence>

              <outSequence>

                     <log></log>

                     <send></send>

              </outSequence>

       </target>

</proxy>

Template ==========================================================================

   <parameter name="source" description="The source" />



   <sequence>



          <property name="enableMTOM" value="true" scope="axis2" />

          <header name="Content-Type" value="multipart/form-data" scope="transport" action="add" />

          <property name="preserveProcessedHeaders" value="true" scope="default"/>



          <property name="uri.var.source" expression="$func:source" />



          <payloadFactory media-type="xml">

                 <format>

                       <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">

                              <soapenv:Header></soapenv:Header>

                              <soapenv:Body>

                                     <root>

                                            <access_token>$1</access_token>

                                            <source>$2</source>

                                     </root>



                              </soapenv:Body>

                       </soapenv:Envelope>

                 </format>

                 <args>

                       <arg expression="get-property('uri.var.accessToken')" />

                       <arg expression="get-property('uri.var.source')" />

                 </args>

          </payloadFactory>

          <call>

                 <endpoint>

                       <http method="post" uri-template="http://localhost:8888/photos" />

                 </endpoint>

          </call>

   </sequence>

front end

<html> 

  <head><title>multipart/form-data - Client</title></head> 

  <body>  

 <form action="http:/localhost:7777/services/postPhotoToAlbumHttpSoap11Endpoint" method="POST" enctype="multipart/form-data"> 

  url: <input type="text" name="accessToken" value=""><br/>  

 Profile pic :  

 <input type="file" name="source" size="40" multiple> 

 </p> 

  <input type="submit" value="Submit"> 

  </form> 

  </body> 

 </html>  

=========================================== seems it is missing boundary when in leaving from ESB.. it that the problem?

Content-Type: multipart/form-data;

boundary=----WebKitFormBoundaryPSfmjvLcmpwvN6Gt

Pls find the behaviors of output based on axis to relay configuration

INPUT to ESB

POST /services/postPhotoToAlbumHttpSoap11Endpoint HTTP/1.1

Accept-Encoding: gzip,deflate

Content-Type: text/xml;charset=UTF-8

SOAPAction: "urn:mediate"

Content-Length: 488

Host: localhost:8280

Connection: Keep-Alive

User-Agent: Apache-HttpClient/4.1.1 (java 1.5)

X-Forwarded-For: 127.0.0.1

<accessToken>CAACEdEose0cBAMotx64LhZBfX7VXAgdt1zsHJCnwJRewdi55clZBUIb6FdRdBKoU4INqXPI5NekgGkPEf5FwIk3ASIZBqmJQPkomlOZAxvj2tusLPl57tUk1RZBGvNq8iQmWKuoW1KsUerxhI4vA1Nol5DvQj4oVLqVO6hwTaC9rArNSWIbr99DZApGxIA5YGxFGi8E0JotgZDZD</accessToken>

<source></source>

output from ESB BinaryRelayBuilder<->ExpandingMessageFormatter

POST /10150897830516344/photos HTTP/1.1

Accept-Encoding: gzip,deflate

X-Forwarded-For: 127.0.0.1

Content-Type: multipart/form-data

SOAPAction: "urn:mediate"

Transfer-Encoding: chunked

Host: a.b.com:443

Connection: Keep-Alive

User-Agent: Synapse-PT-HttpComponents-NIO

X-Forwarded-For: 127.0.0.1, 127.0.0.1

201

CAACEdEose0cBAMotx64LhZBfX7VXAgdt1zsHJCnwJRewdi55clZBUIb6FdRdBKoU4INqXPI5NekgGkPEf5FwIk3ASIZBqmJQPkomlOZAxvj2tusLPl57tUk1RZBGvNq8iQmWKuoW1KsUerxhI4vA1Nol5DvQj4oVLqVO6hwTaC9rArNSWIbr99DZApGxIA5YGxFGi8E0JotgZDZD

0

BinaryRelayBuilder<-> MultipartFormDataFormatter

                    class="org.wso2.carbon.relay."/>

                      class="org.apache.axis2.transport.http."/>

fromESB

--MIMEBoundary_4005c93d90f5f09d8bd30c0691e5b1ddf2192b5c862bdf91

Content-Disposition: form-data; name="access_token"

Content-Type: text/plain; charset=US-ASCII

Content-Transfer-Encoding: 8bit

CAACEdEose0cBAMotx64LhZBfX7VXAgdt1zsHJCnwJRewdi55clZBUIb6FdRdBKoU4INqXPI5NekgGkPEf5FwIk3ASIZBqmJQPkomlOZAxvj2tusLPl57tUk1RZBGvNq8iQmWKuoW1KsUerxhI4vA1Nol5DvQj4oVLqVO6hwTaC9rArNSWIbr99DZApGxIA5YGxFGi8E0JotgZDZD

--MIMEBoundary_4005c93d90f5f09d8bd30c0691e5b1ddf2192b5c862bdf91

Content-Disposition: form-data; name="source"

Content-Type: text/plain; charset=US-ASCII

Content-Transfer-Encoding: 8bit

--MIMEBoundary_4005c93d90f5f09d8bd30c0691e5b1ddf2192b5c862bdf91--

MultipartFormDataBuilder<-> ExpandingMessageFormatter

POST /10150897830516344/photos HTTP/1.1

Accept-Encoding: gzip,deflate

X-Forwarded-For: 127.0.0.1

Content-Type: multipart/form-data

SOAPAction: "urn:mediate"

Transfer-Encoding: chunked

Host: a.b.com:443

Connection: Keep-Alive

User-Agent: Synapse-PT-HttpComponents-NIO

X-Forwarded-For: 127.0.0.1, 127.0.0.1

201

CAACEdEose0cBAMotx64LhZBfX7VXAgdt1zsHJCnwJRewdi55clZBUIb6FdRdBKoU4INqXPI5NekgGkPEf5FwIk3ASIZBqmJQPkomlOZAxvj2tusLPl57tUk1RZBGvNq8iQmWKuoW1KsUerxhI4vA1Nol5DvQj4oVLqVO6hwTaC9rArNSWIbr99DZApGxIA5YGxFGi8E0JotgZDZD

0

MultipartFormDataBuilder <-> MultipartFormDataFormatter

POST /10150897830516344/photos HTTP/1.1

Accept-Encoding: gzip,deflate

X-Forwarded-For: 127.0.0.1

Content-Type: multipart/form-data

SOAPAction: urn:mediate

Transfer-Encoding: chunked

Host: a.b.com:443

Connection: Keep-Alive

User-Agent: Synapse-PT-HttpComponents-NIO

X-Forwarded-For: 127.0.0.1, 127.0.0.1

29c

--MIMEBoundary_588b3db44ce49dd52107589eea5fdcdc3d9a943eeeadcc5a

Content-Disposition: form-data; name="access_token"

Content-Type: text/plain; charset=US-ASCII

Content-Transfer-Encoding: 8bit

CAACEdEose0cBAMotx64LhZBfX7VXAgdt1zsHJCnwJRewdi55clZBUIb6FdRdBKoU4INqXPI5NekgGkPEf5FwIk3ASIZBqmJQPkomlOZAxvj2tusLPl57tUk1RZBGvNq8iQmWKuoW1KsUerxhI4vA1Nol5DvQj4oVLqVO6hwTaC9rArNSWIbr99DZApGxIA5YGxFGi8E0JotgZDZD

--MIMEBoundary_588b3db44ce49dd52107589eea5fdcdc3d9a943eeeadcc5a

Content-Disposition: form-data; name="source"

Content-Type: text/plain; charset=US-ASCII

Content-Transfer-Encoding: 8bit

--MIMEBoundary_588b3db44ce49dd52107589eea5fdcdc3d9a943eeeadcc5a--

0

1

1 Answers

0
votes

problem is WSO2-ESB current version (4.9.0) is not supporting for multipart/form-data processing. you cannot mediate those. only what you can do is use pass through proxy. it is working