如何从WSO2 6.2 ESB REST API或自定义介体获取内容处置内容

问题描述 投票:1回答:1

我想做的就是获取文件名以及扩展名。客户端可以使用任何类型的文件(如(文本,图像,doc等)将其发布到其余的api。

我已经尝试了好几天了,但是不幸的是还没有任何运气。

有人可以帮助我摆脱困境吗?

我试图从属性上下文中获取信息,但一无所获

ESB代码:

    <api context="/esb" name="OCR" xmlns="http://ws.apache.org/ns/synapse">
    <resource methods="POST" uri-template="/upload">
        <inSequence>
            <property name="messageType" scope="axis2" type="STRING" value="multipart/form-data"/>
            <property name="ContentType" value="multipart/form-data" scope="axis2"/>
            <property expression="$body//file" name="fileVar" scope="default" type="STRING"/>
            <log level="custom">
                <property name="CONTENT_DISPOSITION_1" expression="get-property('CONTENT_DISPOSITION')"/>
                <property name="CONTENT_DISPOSITION_2" expression="get-property('TRANSPORT_HEADERS')"/>
            </log>
            <class name="com.example.GetContentDisposition"/>
            <respond/>
        </inSequence>
        <outSequence/>
        <faultSequence/>
    </resource>
</api>

输出:

CONTENT_DISPOSITION_1 =空,而CONTENT_DISPOSITION_2 =空

我已经尝试过使用自定义中介程序

自定义调解人代码:

public boolean mediate(MessageContext context) {
    //Accessing Transport Headers
    System.out.println("------Transport Headers-------");
    Map<String,Object> mapTransportProperties = (Map<String, Object>) ((Axis2MessageContext)context).getAxis2MessageContext().getProperty("TRANSPORT_HEADERS");
    for (Map.Entry entry : mapTransportProperties.entrySet()) {
        System.out.println("TRANS:" +entry.getKey() + ", " + entry.getValue());
    }
    return true;
}

输出:

-运输标题-------

TRANS:Accept,/TRANS:Accept-Encoding,gzip,deflateTRANS:缓存控制,无缓存TRANS:连接,保持活动状态TRANS:Content-Length,233TRANS:内容类型,多部分/表单数据TRANS:主机,本地主机:8280TRANS:Postman-Token,e1261dad-947b-4ece-921b-bbe81d232eb6TRANS:User-Agent,PostmanRuntime / 7.17.1

标题中没有内容处置

在POSTMAN结果中,我可以看到内容配置。

enter image description here

wso2 esb mediator
1个回答
0
投票

您可以启用线路日志来检查标题是否传递到ESB服务器

© www.soinside.com 2019 - 2024. All rights reserved.