| Docs Hilfe
  AppSource  
Docs  /  NVXWUL Web Utility Library  /  Aufgaben

MultiPart/Form-Data Helper


2024/06/27 • 2 Min. Lesedauer
Für den komplexen Content-Type MultiPart/Form-Data gibt es eine Hilfs-Codeunit zum Aufbau eines solchen Bodys.

Allgemein

Ein MultiPart/Form-Data Body kann verwendet werden, um eine oder mehrere Dateien als als auch Felder zu senden. Dieser Body hat mehrere Parameter mit Namen und Inhalt. Anders als ein normaler JSON oder XML Body, können hier Dateien als Byte-Stream mitübergeben werden. Swagger Spezification multipart/form-data

Helper Codeunit

WULMultiPartFormDataHelperNVX

Methoden

InitBody

Bereite die Codeunit Instanz für einen neuen body vor. Die boundary wird auf einen Standardwert gesetzt wenn sie zuvor nicht gesetzt wurde.
procedute InitBody()

AddKey

füge einen Key der Art Text zu einem MultiPart/Form-Data Body hinzu.
procedure AddKey(Name: Text; Value: Text)

AddFile

Füge einen Key der Art Datei zu einem MultiPart/Form-Data Body hinzu.
procedure AddFile(KeyName: Text; FileName: Text; FileInStream: InStream)

FinishBody

Schließe den vorbereiteten Body ab.
procedure FinishBody()

SetBoundary

Setze einen benutzerdefinierten Boundary Text. Das muss gesetzt werden bevor der Body initialisiert wurde.
procedure SetBoundary(NewBoundary: Text)

GetBoundary

Lese den gesetzten Boundary.
procedure GetBoundary(): Text

GetDefaultBoundary

Lese den Standard Boundary Text der Codeunit.
procedure GetDefaultBoundary(): Text

GetMultiformData

Lese den vorbereiteten Body nachdem er abgeschlossen wurde.
procedure GetMultiformData(var _TempBlob: Codeunit "Temp Blob")

GetMultiPartFormDataContentTypeHTTPHeader

Lese den HTTP Header Text mit dem eingestellten Boundary Wert für den HTTP Request.
procedure GetMultiPartFormDataContentTypeHTTPHeader() MultiPartFormDataContentTypeHTTPHeader: Text

Beispiel

Das Beispiel erstellt einen Multipart/Form-Data Body mit einem Key mit dem namen "keyvalue1" mit dem wert "myvalue" und einem 2ten key mit dem namen "example_file" mit Dateinamen "examle.txt" und einem Dateiinhalt.
procedure Example(WebAuthorization: Record WULWebAuthorizationNVX; URL: Text[250]; ExampleFileInstream: InStream) ResponseText: Text;
var
    TempBlob: Codeunit "Temp Blob";
    MultiformDataHelper: Codeunit WULMultiPartFormDataHelperNVX;
    WebMessage: Record WULWebMessageNVX;
    ResponseMessage: HttpResponseMessage;
    MultiPartFormDataInStream: InStream;
begin
    Commit();

    MultiformDataHelper.InitBody();
    MultiformDataHelper.AddKey('keyvalue1', 'myvalue');
    MultiformDataHelper.AddFile('example_file', 'example.txt', ExampleFileInstream);
    MultiformDataHelper.FinishBody();

    MultiformDataHelper.GetMultiformData(TempBlob);
    TempBlob.CreateInStream(MultiPartFormDataInStream);
    WebMessage.CreateMessage(Enum::"Http Request Type"::POST, URL, MultiPartFormDataInStream);

    WebMessage.AddWebMessageHeader(Enum::WULWebMessageHeaderTypeNVX::"Request Header", 'Accept', 'application/json');
    WebMessage.AddWebMessageHeader(Enum::WULWebMessageHeaderTypeNVX::"Content Header", 'Content-Type', MultiformDataHelper.GetMultiPartFormDataContentTypeHTTPHeader());
    WebMessage.AddWebMessageAuthorization(WULWebMessageHeaderTypeNVX::"Request Header", WebAuthorization);

    Commit();
    WebMessage.SendMessage(ResponseMessage);
    Commit();
    ResponseText := WebMessage.GetResponse();
end;


Feedback senden für
DE|EN Impressum