Mit http Ausgangsadapter eine Datei “hochladen”

  • Beitrag
    vikl
    Teilnehmer
    Hallo liebes Support Team,

    können Sie ein Beispiel eines http POST Aufrufs mit Transconnect hier zur Verfügung stellen, welche folgenden Kriterien entspricht:

    – POST eines Contents mit “Content-Type: multipart/form-data”
    – Eine Datei aus dem Prozess heraus soll hochgeladen (Dateiupload) werden

    Im Handbuch (Adapterreferenz http) wird dieses Szenario angesprochen, aber mir ist nicht ganz klar, wie das dann in der Umsetzung ausschauen soll.

    Vielen Dank und Grüße

    0
    0
Ansicht von 6 Antworten - 1 bis 6 (von insgesamt 6)
  • Antworten
    Markus Franke
    Administrator
    In den nächsten Tagen wird es dazu einen Community Beitrag inklusive Beispiel-Code geben. Wir möchten sie also bitten sich noch ein wenig zu gedulden.

    Ihr TRANSCONNECT-Team

    0
    0
    Benjamin Krueger
    Administrator
    Hallo vikl,

    Der passende Artikel ist jetzt in der Community unter folgendem Link verfügbar.

    Ihr TRANSCONNECT-Team

    0
    0
    vikl
    Teilnehmer
    Vielen Dank für das Beispiel Herr Krüger. Leider kann ich mit Ihrem Beispiel mein Problem immer noch nicht lösen. Ich brauche nämlich folgenden curl Befehl:

    curl -X POST “https://veryniceURL” -H “accept: application/json” -H “Authorization: Bearer XYZ” -H “Content-Type: multipart/form-data” -F “fileName=DateiName.csv” -F “fileUpload=@Batch.csv;type=application/vnd.ms-excel”

    Diesen http POST Call bekomme ich irgendwie mit Transconnect nicht definiert.

    0
    0
    Benjamin Krueger
    Administrator
    Hallo vikl,

    Über den HEADER Bereich in der Transformation lassen sich die mit -H markierten Einträge in den HEADER der Http Request übernehmen. Das ist in diesem curl-Befehl jedoch nur für den “accept” Header notwendig. Die Auswahl der Authorisierung sowie das Angeben der Credentials kann in den Adaptereinstellungen erfolgen und der allgemeine CONTENT-TYPE steht als Attribut in der REQUEST. Der geänderte Dateiname kann über das NAME Attribut im CONTENT übergeben werden. Die in “fileUpload” definierte Datei muss dabei bereits in der einkommenden Nachricht als Anhang vorhanden sein und wird über die CONTENTID dem CONTENT zugeordnet. Der zusätzlich spezifizierte Typ kann wiederum als Attribut CONTENT-TYPE an den CONTENT hinzugefügt werden.

    Folgende Transformation sollte denselben Effekt erzeugen wie der gezeigte curl Befehl:

    <?xml version="1.0" encoding="UTF-8"?>
        <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
            <xsl:template match="/">
                <ROOT>
                    <REQUEST OPERATION="POST" EMBED="false" CONTENT-TYPE="multipart/form-data">
                        <HEADER>
                            <accept>application/json</accept>
                        </HEADER>
                        <CONTENT NAME="DateiName.csv" CONTENT-TYPE="application/vnd.ms-excel">
                            <xsl:attribute name="CONTENTID">
                                <xsl:value-of select="//FILE/@CONTENTID"/>
                            </xsl:attribute>
                        </CONTENT>
                    </REQUEST>
                </ROOT>
            </xsl:template>
        </xsl:stylesheet>

     

    Ihr TRANSCONNECT-Team

    0
    0
    vikl
    Teilnehmer
    Hallo und vielen Dank für Ihre Antwort,

    sowie ich das sehe, wandelt Transconnect jeglichen Inhalt im Tag <CONTENT>xyz</CONTENT>  in ein  curl -d “xyz” um. Auch das von Ihnen gezeigte Beispiel. Trotz des CONTENT-TYPE=“multipart/form-data” im Header des Requests.

    Für die hier behandelte Fragestellung benötige ich jedoch ein curl -F

    Ihr Beispiel und auch folgendes habe ich bereits leider ohne Erfolg ausprobiert:

    <REQUEST OPERATION="POST" CONTENT-TYPE="multipart/form-data"
    EMBED="true"
    NAME="REQ_FileUpload">
    ...
    <CONTENT NAME="PART1"> 
    <xsl:text disable-output-escaping="yes">&lt;![CDATA[</xsl:text>
    <xsl:value-of select="concat('fileName=', //FILE/@NAME)" />
    <xsl:text disable-output-escaping="yes">]]&gt;</xsl:text>
    </CONTENT>
    
    <CONTENT NAME="PART2"> 
    <xsl:text disable-output-escaping="yes">&lt;![CDATA[</xsl:text> 
    <xsl:value-of select="concat('fileUpload=@', //FILE/@CONTENTID ,';type=application/vnd.ms-excel')" />
    <xsl:text disable-output-escaping="yes">]]&gt;</xsl:text>
    </CONTENT> 
    </REQUEST>

    Hätten Sie noch weitere Hinweise für mich?

    0
    0
    Markus Franke
    Administrator
    Hallo vikl,

    entschuldigen sie die verspätete Antwort unsererseits.

    Die HTTP-Nachricht die der Curl-Request

    curl -X POST “https://veryniceURL&#8221; -H “accept: application/json” -H “Authorization: Bearer XYZ” -H “Content-Type: multipart/form-data” -F “fileName=DateiName.csv” -F “fileUpload=@Batch.csv;type=application/vnd.ms-excel”

    erzeugt, können sie ebenfalls mit folgendem TRANSCONNECT Request generieren

    <ROOT>    <REQUEST OPERATION="POST" EMBED="false" CONTENT-TYPE="multipart/form-data">        <HEADER>            <accept>application/json</accept>            <Authorization>Bearer XYZ</Authorization>        </HEADER>        <CONTENT NAME="fileName">DateiName.csv</CONTENT>        <CONTENT NAME="fileUpload" FILENAME="Batch.csv" CONTENT-TYPE="application/vnd.ms-excel" CONTENTID="Batch.csv"/>    </REQUEST></ROOT>
    
    

    Wir hoffen das hilft ihnen weiter.

    Ihr TRANSCONNECT-Team

    0
    0
Ansicht von 6 Antworten - 1 bis 6 (von insgesamt 6)
  • Du musst angemeldet sein, um auf dieses Thema antworten zu können.