我需要将照片和访问令牌传递给后端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 回答
问题是WSO2-ESB当前版本(4.9.0)不支持多部分/表单数据处理 . 你不能调解那些 . 只有你可以做的是使用传递代理 . 这是工作