当前位置: 首页 > 知识库问答 >
问题:

Multipart/form-data with WSO2 ESB

龙永思
2023-03-14

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

is Multipart/form-data我创建了html表单和操作是esb的endpoint,我已经跟踪了通往ESB[A]和从ESB[B]出去的流量。这似乎幻灯片上的变化,我不知道解决这个问题。当我将捕获的流量发送到ESB[A]时,后端服务会接受它。但是由ESB[B]输出的流量不被后端接受。表示不识别边界中的值。上面写着“价值观是空的”

输出在发送到ESB的过程中–当此FWD发送到后端时,它可以识别==========================================================================

POST /services/postPhotoToAlbumHttpSoap11EndpointHTTP/1.1

主机:localhost:8280

连接:保持活力

内容长度:4623

缓存控制:最大年龄=0

接受:text/html、application/xhtml-xml、application/xml;q=0.9,图像/webp,/;q=0.8

来源:空

用户代理:Mozilla/5.0(Windows NT 6.1;WOW64)AppleWebKit/537.36(KHTML,如Gecko)Chrome/32.0.1700.76 Safari/537.36

Content-Type:多部分/表单数据;边界=----WebKitFormBoundaryPSfmjvLcmpwvN6Gt

接受编码:gzip、deflate、sdch

接受语言:en-US,en;q=0.8

Cookie: menuPanel=可见;menuPanelType=主

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

----WebKitFormBoundaryPSfmjvLcmpwvN6Gt

内容配置:表单数据;name=“accessToken”

CAACEDEOSE0CBALXNBSNFZENJ7Ni1Bklyx0TbMFD4G5Bwifg3VNP9xWQDNT52MCWZA2DTESXYC4AMNOZAHFNUNO0JxV5IZC9PQZZJEWBZCHUOOEXNZPT5BMNCEAAFB3JU2ZCNLOZKYZCPTJLdNYNQHdRZC9670N0N0N0N0BowUohlH9ObejQYGZD

----WebKitFormBoundaryPSfmjvLcmpwvN6Gt

内容配置:表单数据;name=“source”;filename=“kdinesh_LThumb.jpg”

内容类型:图像/jpeg

ÿØÿà_

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

POST/10150897830516344/photos HTTP/1.1

接受语言:en-US,en;q=0.8

Cookie: menuPanel=可见;menuPanelType=主

接受编码:gzip、deflate、sdch

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

来源:空

内容类型:多部分/表单数据

接受:text/html、application/xhtml-xml、application/xml;q=0.9,图像/webp,/;q=0.8

缓存控制:最大年龄=0

传输-编码:分块

主机:api.localhost

连接:保持活力

用户代理:Synapse PT HttpComponents NIO

X-Forwarded-For:0:0:0:0:0:1127.0.0.1

1816年

--MIMEBOU 960DD4BB3066B1FF153BC3151E7776B65947BA8DD00425E

内容-处置:表单-数据;名称="access_token"

内容类型:文本/纯文本;字符集=US-ASCII

内容-传输-编码: 8bit

CAACEDEOSE0CBALXNBSNFZENJ7Ni1Bklyx0TbMFD4G5Bwifg3VNP9xWQDNT52MCWZA2DTESXYC4AMNOZAHFNUNO0JxV5IZC9PQZZJEWBZCHUOOEXNZPT5BMNCEAAFB3JU2ZCNLOZKYZCPTJLdNYNQHdRZC9670N0N0N0N0BowUohlH9ObejQYGZD

--MIMEBOU 960DD4BB3066B1FF153BC3151E7776B65947BA8DD00425E

内容-处置:表单-数据;名称="源"

内容类型:文本/纯文本;字符集=US-ASCII

内容-传输-编码: 8bit

/9j/4AAQSkZJRgABAgEAAAAAAAD/2wBDAAUDBAQEAwUEBAQFBQUGBwwIBwcHBw8KCwkMEQ8SEhEPERATFhwXExQaFRARGCEYGhwdHx8fExciJCIeJBweHx7/2wBDAQUFBQcGBw4ICA4eFBEUHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh7/wAARCABvAG8DASIAAhEMIMEBoundary_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=""><br/>  

 Profile pic :  

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

 </p> 

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

  </form> 

  </body> 

 </html>  

=========================================== 似乎在离开ESB时缺少边界...

内容类型:多部分/表单数据;

请根据轴到继电器配置查找输出行为

ESB的输入

POST /services/postPhotoToAlbumHttpSoap11EndpointHTTP/1.1

接受编码:gzip,deflate

内容类型:text/xml;字符集=UTF-8

SOAPAction:“urn:调解”

内容-长度: 488

主机:localhost:8280

连接:保持活力

用户代理:Apache-HttpClient/4.1.1(java 1.5)

X-For:127.0.0.1

<accessToken>CAACEdEose0cBAMotx64LhZBfX7VXAgdt1zsHJCnwJRewdi55clZBUIb6FdRdBKoU4INqXPI5NekgGkPEf5FwIk3ASIZBqmJQPkomlOZAxvj2tusLPl57tUk1RZBGvNq8iQmWKuoW1KsUerxhI4vA1Nol5DvQj4oVLqVO6hwTaC9rArNSWIbr99DZApGxIA5YGxFGi8E0JotgZDZD</accessToken>

<source></source>

来自ESB BinaryRelayBuilder的输出

POST/10150897830516344/photos HTTP/1.1

接受编码:gzip,deflate

X-For:127.0.0.1

内容类型:多部分/表单数据

SOAPAction:“urn:调解”

传输-编码:分块

主持人:a.b.com:443

连接:保持活力

用户代理:Synapse PT HttpComponents NIO

X-For:127.0.0.1127.0.0.1

201

CAACEDEOSE0CBAMOTX64LHZBFX7VXAGDT1ZSHJCNWJREWDI55CLZBUIB6FDRDBKOU4INQXPI5NEKGKPEF5FWIK3ASIQBQMJQKKKOMLOZAXVJ2TUSLPL57TUK1RZBGVNQ8IQMWKUKUW15DVQJ4OVO6HWTAC9RARSWIBR99DZAPGXIA5YGGGI8E0GZDZD

0

二进制中继生成器

                    class="org.wso2.carbon.relay."/>
                      class="org.apache.axis2.transport.http."/>

从ESB

--MIMEBoundary_4005c93d90f5f09d8bd30c0691e5b1ddf2192b5c862bdf91

内容-处置:表单-数据;名称="access_token"

内容类型:文本/纯文本;字符集=US-ASCII

内容-传输-编码: 8bit

CAACEDEOSE0CBAMOTX64LHZBFX7VXAGDT1ZSHJCNWJREWDI55CLZBUIB6FDRDBKOU4INQXPI5NEKGKPEF5FWIK3ASIQBQMJQKKKOMLOZAXVJ2TUSLPL57TUK1RZBGVNQ8IQMWKUKUW15DVQJ4OVO6HWTAC9RARSWIBR99DZAPGXIA5YGGGI8E0GZDZD

--MIMEBoundary_4005c93d90f5f09d8bd30c0691e5b1ddf2192b5c862bdf91

内容-处置:表单-数据;名称="源"

内容类型:文本/纯文本;字符集=US-ASCII

内容-传输-编码: 8bit

--MIMEBoundary_4005c93d90f5f09d8bd30c0691e5b1ddf2192b5c862bdf91--

MultipartFormDataBuilder

POST/10150897830516344/photos HTTP/1.1

接受编码:gzip,deflate

X-For:127.0.0.1

内容类型:多部分/表单数据

SOAPAction:“urn:调解”

传输-编码:分块

主持人:a.b.com:443

连接:保持活力

用户代理:Synapse PT HttpComponents NIO

X-For:127.0.0.1127.0.0.1

201

CAACEDEOSE0CBAMOTX64LHZBFX7VXAGDT1ZSHJCNWJREWDI55CLZBUIB6FDRDBKOU4INQXPI5NEKGKPEF5FWIK3ASIQBQMJQKKKOMLOZAXVJ2TUSLPL57TUK1RZBGVNQ8IQMWKUKUW15DVQJ4OVO6HWTAC9RARSWIBR99DZAPGXIA5YGGGI8E0GZDZD

0

MultipartFormDataBuilder

POST/10150897830516344/photos HTTP/1.1

接受编码:gzip,deflate

X-For:127.0.0.1

内容类型:多部分/表单数据

SOAPAction:urn:mediate

传输-编码:分块

主持人:a.b.com:443

连接:保持活力

用户代理:Synapse PT HttpComponents NIO

X-For:127.0.0.1127.0.0.1

29c

--MimeBoundary588B3DB44CE49DD52107589EEA5FDCDC3D9A943EEADCC5A

内容-处置:表单-数据;名称="access_token"

内容类型:文本/纯文本;字符集=US-ASCII

内容-传输-编码: 8bit

CAACEDEOSE0CBAMOTX64LHZBFX7VXAGDT1ZSHJCNWJREWDI55CLZBUIB6FDRDBKOU4INQXPI5NEKGKPEF5FWIK3ASIQBQMJQKKKOMLOZAXVJ2TUSLPL57TUK1RZBGVNQ8IQMWKUKUW15DVQJ4OVO6HWTAC9RARSWIBR99DZAPGXIA5YGGGI8E0GZDZD

--MimeBoundary588B3DB44CE49DD52107589EEA5FDCDC3D9A943EEADCC5A

内容-处置:表单-数据;名称="源"

内容类型:文本/纯文本;字符集=US-ASCII

内容-传输-编码: 8bit

--MimeBoundary588B3DB44CE49DD52107589EEA5FDCDC3D9A943EEADCC5A--

0

共有1个答案

宫俊才
2023-03-14

问题是WSO2-ESB当前版本(4.9.0)不支持多部分/表单数据处理。你不能调解这些。您只能使用直通代理。它正在工作

 类似资料:
  • 问题内容: 我想在JavaScript中使用XMLHttpRequest来发布包含文件类型输入元素的表单,以便避免页面刷新并返回有用的XML。 我可以使用JavaScript将表单上的目标属性设置为MSIE的iframe或Mozilla的对象,而无需刷新页面即可提交表单,但这有两个问题。较小的问题是目标与W3C不兼容(这就是为什么我在JavaScript中而不是在XHTML中设置目标)。主要问题是

  • 问题内容: HTML表单是什么意思,什么时候应该使用它? 问题答案: 发出POST请求时,必须以某种方式对构成请求主体的数据进行编码。 HTML表单提供了三种编码方法。 (默认) 正在进行添加的工作,但已被放弃。 (使用HTML表单提交以外的其他方式生成的HTTP请求也可以使用其他编码。JSON是用于Web服务的常见格式,有些仍然使用SOAP。) 格式的细节对大多数开发人员而言并不重要。要点是:

  • 我必须使用REST API将文件和信息上传到服务器。该API使用多部分形式,但我似乎无法正确使用它。 null 我尝试了几种方法,比如下面的代码,但是我不断从服务器得到错误的请求。

  • 问题内容: 我正在尝试使用伪装完成多部分文件上传,但似乎在任何地方都找不到很好的示例。我本质上希望HTTP请求类似于以下内容: 甚至… 我是否需要手动构建请求主体,包括生成多部分边界?考虑到此客户端可以执行的其他所有操作,这似乎有点过头了。 问题答案: 不,你没有。您只需要定义一种代理接口方法,将content-type指定为:multipart / form- data和其他信息,例如远程API

  • 我正在尝试使用curl向REST服务发布一个xml文件(utf-16编码)。REST服务需要“multipart/form-data”内容类型。 Curl脚本:Curl-k-i-h“content-type=multipart/form-data”-f“filename=@file.xml;type=text/xml”-x POST-u: 然而,我在运行脚本时得到500个内部服务器错误。 响应:<

  • 我试图使用feign完成一个多部分文件上传,但是我似乎在任何地方都找不到一个好的例子。我基本上希望HTTP请求的结果类似如下: 或者甚至… 我需要手动构建请求体吗,包括生成多部分边界?考虑到这个客户端可以做的所有其他事情,这似乎有点过分。