wso2 - как сохранить файл из ответа http - PullRequest
0 голосов
/ 05 августа 2020

У меня есть код, в котором сначала мне нужно войти в систему и установить COOKIES, URL-адрес следующего вызова, который в ответ создает файл PDF. Как сохранить файл на диске? Я включил:

<messageFormatter contentType="multipart/form-data" class="org.wso2.carbon.relay.ExpandingMessageFormatter"/>

и

<messageBuilder contentType="multipart/form-data" class="org.wso2.carbon.relay.BinaryRelayBuilder"/>

Я думаю, что могу получить BASE64 этого файла, но получаю сообщение об ошибке:

[2020-08-05 18:25:31,332] [EI-Core] ERROR - RelayUtils Error while building Passthrough stream
org.apache.axiom.om.OMException: com.ctc.wstx.exc.WstxIOException: Invalid UTF-8 middle byte 0xe5 (at char #10, byte #-1)
...

Мой код :

<?xml version="1.0" encoding="UTF-8"?>
<sequence name="edi.visma.login" xmlns="http://ws.apache.org/ns/synapse">
    <payloadFactory media-type="xml">
        <format>
            <root>
                <password>pass12345</password>
                <username>user12345</username>
            </root>
        </format>
    </payloadFactory>
    <property name="messageType" scope="axis2" type="STRING" value="application/x-www-form-urlencoded"/>
    <property name="DISABLE_CHUNKING" scope="axis2" value="true"/>
    <call>
        <endpoint>
            <http method="POST" uri-template="https://www.proceedo.net/suppliercenter/common/logon.do"/>
        </endpoint>
    </call>
    <property expression="$trp:Set-Cookie" name="setCookieHeader"
        scope="default" type="STRING" xmlns:ns="http://org.apache.synapse/xsd"/>
    <payloadFactory media-type="xml">
        <format>
            <root>
                <mtfId>150</mtfId>
                <orderSno>50339375</orderSno>
            </root>
        </format>
    </payloadFactory>
        <property name="messageType" scope="axis2" type="STRING" value="application/x-www-form-urlencoded"/>
    <property expression="$ctx:setCookieHeader" name="Cookie"
        scope="transport" xmlns:ns="http://org.apache.synapse/xsd"/>
    <property name="DISABLE_CHUNKING" scope="axis2" value="true"/>
    <call>
        <endpoint>
            <http method="POST" uri-template="https://www.proceedo.net/suppliercenter/common/orderexport.do"/>
        </endpoint>
    </call>
    <log level="full"/>
</sequence>
...