Re: PDF im BODY eines HTTP Requests senden

2. August 2022 14:45

Okay, wow. Schonmal vielen Dank! Wir sind einen Schritt weiter.

Nun lautet die Fehlermeldung: ERROR:UNSUPPORTED_FILE_TYPE.

Wahrscheinlich fehlt noch die von dir vermutete Umwandlung.

EDIT: Habe mir eben den Pfad angeschaut, die Datei endet in dem Moment ja noch auf .tmp anstatt auf .pdf.
Vermutlich liegt es daran.

Re: PDF im BODY eines HTTP Requests senden

2. August 2022 14:57

Hier wird die Datei direkt übermittelt, daher ist hier eigentlich keine Umwandlung mehr nötig.
Wenn das noch ".tmp" ist wird das wahrscheinlich einfach blockiert, da nur bestimmte Dateitypen hochgeladen werden dürfen.

Re: PDF im BODY eines HTTP Requests senden

2. August 2022 15:07

Hm, tricky.

Bei Endung .pdf erscheint dieselbe Fehlermeldung.

Vielleicht muss ich es tatsächlich physisch speichern, dann uploaden, dann löschen.

EDIT:

Ok, das war es auch nicht. Selbst wenn ich eine pdf händisch ablege, und dann diese nehme und versuche per WebClient.UploadFile hochzuladen, erscheint die Fehlermeldung.

Re: PDF im BODY eines HTTP Requests senden

2. August 2022 15:23

Dann musst du wahrscheinlich trotzdem bei der Gegenseite nachfragen, wenn du hier keinen direkten Zugriff hast.
Da die Antwort ja direkt von der Ressource kommt.

Dort müsste dann abgeklärt werden was genau übermittelt werden muss und welche Dateitypen unterstützt werden.

Re: PDF im BODY eines HTTP Requests senden

2. August 2022 16:02

Ja, da warte ich nun auf Antwort.

Noch eine - vielleicht dumme - Frage:
Muss ich bei der Abfrage nicht auch irgendwie den Header gestalten? Content-Type, Content-Length, etc?

Re: PDF im BODY eines HTTP Requests senden

2. August 2022 16:14

Eventuell, kommt drauf an was benötigt wird. Prinzipiell kann man Header mit WebClient.Headers setzen.

Ich sehe du hast es mit Postman versucht, dort hätte es funktioniert? Wenn du hier die Parameter mitteilen kannst kann man das ggf. entsprechend abändern.

Re: PDF im BODY eines HTTP Requests senden

3. August 2022 07:50

Mit Postman hat es funktioniert. Auch mit der gleichen PDF. Daher vermute ich, dass ich den Content-Type noch setzen muss, den switcht Postman ja automatisch, wenn ich eine PDF einfüge.

Wie setze ich denn die Header mit WebClient? Da benötige ich doch noch eine zweite Methode um den Header zu bestücken und dann wird per Webclient(Headers) zugewiesen, verstehe ich das richtig?

Ich versuche es mal hiermit:
https://docs.microsoft.com/de-de/dotnet ... ew=net-6.0

Re: PDF im BODY eines HTTP Requests senden

3. August 2022 09:08

Ja, so sollte es funktionieren.
Also das könnte dann so aussehen, wenn wir deinen Code berücksichtigen:
Code:
webClient.Headers.Add('Content-Type','application/x-www-form-urlencoded');


Das in den Klammern kannst du dann entsprechend anpassen.

Re: PDF im BODY eines HTTP Requests senden

4. August 2022 08:27

Hallo,

heute früh ausprobiert und ... es funktioniert! Vielen, vielen, vielen, vielen Dank für die Hilfe, vor allem an Furean.

Der funktiorende Code sieht dann wie folgt aus:

Code:
// dotnet webclient Instanz erzeugen
webClient := webClient.WebClient();

fileName := 'X:\XXXXXXXX\' + FORMAT(SalesShipmentHeader."No.") +'.pdf';

// Sprache für den Report setzen
locReport.SetPrintOnceOnly(TRUE);
locReport.LANGUAGE := lang.GetLanguageID('DEU');
GLOBALLANGUAGE(locReport.LANGUAGE);

SalesShipmentHeader.SETFILTER("No.",DocNo);
IF SalesShipmentHeader.FINDFIRST THEN BEGIN

  locReport.SETTABLEVIEW(SalesShipmentHeader);
  IF locReport.SAVEASPDF(fileName) THEN BEGIN
    // eigentliches uploaden   
    webClient.Headers.Add('Content-Type','application/pdf');
    WebResponse := webClient.UploadFile(url, 'POST', fileName);
    txtString := txtString.Default;
    txt := txtString.GetString(WebResponse);
    MESSAGE(txt);  //<---Hier dann die JSON noch korrekt auslesen, ToDo
   
    // nach dem upload Datei wieder löschen
    ERASE(fileName);
    EXIT(TRUE)
  END ELSE
    EXIT(FALSE);
END;


mfG fips