首页 文章

使用WSO2 ESB的multipart / form-data

提问于
浏览
0

我需要将照片和访问令牌传递给后端REST服务 . 内容类型

是multipart / form-data我创建了html表单,action是esb的 endpoints 我已经在去往ESB [A]的路上跟踪流量并从ESB [B]出去了 . 似乎幻灯片的变化,我不知道解决这个问题 . 当我在前往ESB [A]途中发送捕获的流量时,它接受后端服务 . 但ESB [B]发出的流量不受后端接受 . 意味着不承认边界的 Value . 它说“ Value 空”

输出到ESB的路上 - 当这个FWD后端识别它时==================================== ======================================

POST / services / postPhotoToAlbumHttpSoap11Endpoint HTTP / 1.1

主持人:localhost:8280

连接:保持活力

内容长度:4623

缓存控制:max-age = 0

接受:text / html,application / xhtml xml,application / xml; q = 0.9,image / webp,/; q = 0.8

来源:null

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

内容类型:multipart / form-data;边界= ---- WebKitFormBoundaryPSfmjvLcmpwvN6Gt

Accept-Encoding:gzip,deflate,sdch

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

Cookie:menuPanel = visible; menuPanelType =主

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

------ WebKitFormBoundaryPSfmjvLcmpwvN6Gt

内容处理:表格数据; NAME = “的accessToken”

CAACEdEose0cBALXnbsnFzenjs7ni1bkLYx0Tybmfd4G5CBWifG3VnP9xWQDNT52mCWZA2dTESXYc4aMNOZAHfNUNO0jxV5IZC9PQzjeWBZCHuOOexnzpt5BmNCeZAAFb3juHU2aZAZCNLozkOYcyKUj1IOl2jYzCpTjLdnynqhsDrZCknPC9670N0bOw1cIVUohLh9OBEjqyogZDZD

------ WebKitFormBoundaryPSfmjvLcmpwvN6Gt

内容处理:表格数据; NAME = “源”;文件名= “kdinesh_LThumb.jpg”

内容类型:image / jpeg

ÿØÿà_

输出从ESB输出============================================= =============================

POST / 10150897830516344 /照片HTTP / 1.1

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

Cookie:menuPanel = visible; menuPanelType =主

Accept-Encoding:gzip,deflate,sdch

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

来源:null

内容类型:multipart / form-data

接受:text / html,application / xhtml xml,application / xml; q = 0.9,image / webp,/; q = 0.8

缓存控制:max-age = 0

转移编码:分块

主持人:api.localhost

连接:保持活力

用户代理:Synapse-PT-HttpComponents-NIO

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

1816

--MIMEBoundary_960dd4bb3066b1fff153bc3151e7776b65947ba8dd00425e

内容处理:表格数据; NAME = “的access_token”

内容类型:text / plain;字符集= US-ASCII

内容传输编码:8位

CAACEdEose0cBALXnbsnFzenjs7ni1bkLYx0Tybmfd4G5CBWifG3VnP9xWQDNT52mCWZA2dTESXYc4aMNOZAHfNUNO0jxV5IZC9PQzjeWBZCHuOOexnzpt5BmNCeZAAFb3juHU2aZAZCNLozkOYcyKUj1IOl2jYzCpTjLdnynqhsDrZCknPC9670N0bOw1cIVUohLh9OBEjqyogZDZD

--MIMEBoundary_960dd4bb3066b1fff153bc3151e7776b65947ba8dd00425e

内容处理:表格数据;名称=“源”

内容类型:text / plain;字符集= US-ASCII

内容传输编码:8位

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

0

代理

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

模板================================================= =========================

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

前端

<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="">
Profile pic : <input type="file" name="source" size="40" multiple> </p> <input type="submit" value="Submit"> </form> </body> </html>

===========================================似乎在进入时缺少边界从ESB离开..那问题呢?

内容类型:multipart / form-data;

boundary = ---- WebKitFormBoundaryPSfmjvLcmpwvN6Gt

请找到基于轴到中继配置的输出行为

INPUT to ESB

POST / services / postPhotoToAlbumHttpSoap11Endpoint HTTP / 1.1

Accept-Encoding:gzip,deflate

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

SOAPAction:“urn:mediate”

内容长度:488

主持人:localhost:8280

连接:保持活力

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 /照片HTTP / 1.1

Accept-Encoding:gzip,deflate

X-Forwarded-For:127.0.0.1

内容类型:multipart / form-data

SOAPAction:“urn:mediate”

转移编码:分块

主持人:a.b.com:443

连接:保持活力

用户代理: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

内容处理:表格数据; NAME = “的access_token”

内容类型:text / plain;字符集= US-ASCII

内容传输编码:8位

CAACEdEose0cBAMotx64LhZBfX7VXAgdt1zsHJCnwJRewdi55clZBUIb6FdRdBKoU4INqXPI5NekgGkPEf5FwIk3ASIZBqmJQPkomlOZAxvj2tusLPl57tUk1RZBGvNq8iQmWKuoW1KsUerxhI4vA1Nol5DvQj4oVLqVO6hwTaC9rArNSWIbr99DZApGxIA5YGxFGi8E0JotgZDZD

--MIMEBoundary_4005c93d90f5f09d8bd30c0691e5b1ddf2192b5c862bdf91

内容处理:表格数据;名称=“源”

内容类型:text / plain;字符集= US-ASCII

内容传输编码:8位

--MIMEBoundary_4005c93d90f5f09d8bd30c0691e5b1ddf2192b5c862bdf91--

MultipartFormDataBuilder<-> ExpandingMessageFormatter

POST / 10150897830516344 /照片HTTP / 1.1

Accept-Encoding:gzip,deflate

X-Forwarded-For:127.0.0.1

内容类型:multipart / form-data

SOAPAction:“urn:mediate”

转移编码:分块

主持人:a.b.com:443

连接:保持活力

用户代理:Synapse-PT-HttpComponents-NIO

X-Forwarded-For:127.0.0.1,127.0.0.1

201

CAACEdEose0cBAMotx64LhZBfX7VXAgdt1zsHJCnwJRewdi55clZBUIb6FdRdBKoU4INqXPI5NekgGkPEf5FwIk3ASIZBqmJQPkomlOZAxvj2tusLPl57tUk1RZBGvNq8iQmWKuoW1KsUerxhI4vA1Nol5DvQj4oVLqVO6hwTaC9rArNSWIbr99DZApGxIA5YGxFGi8E0JotgZDZD

0

MultipartFormDataBuilder <-> MultipartFormDataFormatter

POST / 10150897830516344 /照片HTTP / 1.1

Accept-Encoding:gzip,deflate

X-Forwarded-For:127.0.0.1

内容类型:multipart / form-data

SOAPAction:urn:mediate

转移编码:分块

主持人:a.b.com:443

连接:保持活力

用户代理:Synapse-PT-HttpComponents-NIO

X-Forwarded-For:127.0.0.1,127.0.0.1

29C

--MIMEBoundary_588b3db44ce49dd52107589eea5fdcdc3d9a943eeeadcc5a

内容处理:表格数据; NAME = “的access_token”

内容类型:text / plain;字符集= US-ASCII

内容传输编码:8位

CAACEdEose0cBAMotx64LhZBfX7VXAgdt1zsHJCnwJRewdi55clZBUIb6FdRdBKoU4INqXPI5NekgGkPEf5FwIk3ASIZBqmJQPkomlOZAxvj2tusLPl57tUk1RZBGvNq8iQmWKuoW1KsUerxhI4vA1Nol5DvQj4oVLqVO6hwTaC9rArNSWIbr99DZApGxIA5YGxFGi8E0JotgZDZD

--MIMEBoundary_588b3db44ce49dd52107589eea5fdcdc3d9a943eeeadcc5a

内容处理:表格数据;名称=“源”

内容类型:text / plain;字符集= US-ASCII

内容传输编码:8位

--MIMEBoundary_588b3db44ce49dd52107589eea5fdcdc3d9a943eeeadcc5a--

0

1 回答

  • 0

    问题是WSO2-ESB当前版本(4.9.0)不支持多部分/表单数据处理 . 你不能调解那些 . 只有你可以做的是使用传递代理 . 这是工作

相关问题