[Gelöst] PDF im BODY eines HTTP Requests senden
Verfasst: 19. Juli 2022 09:32
Hallo zusammen,
ich sitze in den letzten Tage an einer Aufgabe, die ich bisher alleine nicht gelöst bekomme, daher mein Ersuchen nach Hilfe
Derzeit entwickle ich eine Schnittstelle aus NAV an ein Telemetriksystem. Dabei erstelle ich XMLs und sende diese an einen Webservice, das funktioniert so weit alles. Die Technik, die ich dazu nutze, habe ich mir hier abgeschaut.
In einem zweiten Schritt möchte ich einen Anhang (Lieferschein als PDF - aus einem NAV Report erstellt) an eine .../file_storage/upload_file.php?... URL senden, die Methode muss dabei 'POST' sein. Auch bis hierhin noch kein Problem, dafür kann ich die webClient.UploadFile(url, 'POST', fileName) nehmen. Zurück kommt laut Schnittstellenbeschreibung eine JSON, die wie folgt aufgebaut ist:
[
{
"name": "file.png",
"status": "OK",
"uuid":"08910afd0bfcc7aa193d40c486ca156a"
}
]
Nun habe ich jedoch keine Ahnung, wie ich die Antwort "einfange" und dann die UUID auslesen kann. Der Rückgabewert von webCient.UploadFile ist ein Byte Array, wo nun meine JSON drin steckt. Nur weiß ich nun nicht, wie ich das lesbar mache, so dass ich mir die UUID in NAV wegschreiben kann. Muss dazu sagen, dass ich nur Low Code und C/AL (und ein wenig AL) programmiert habe und kein gelernter Entwickler bin, deswegen oft bei den DotNet-Geschichten an meine Grenzen stoße.
Mein Code sieht (jetzt gerade - nach diversen trial and error) so aus:
System.Net.WebClient.'System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'
System.Net.WebResponse.'System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'
Da kommt dann aber nur ein "Byte[]" raus. Mir ist klar, dass der Code so nicht funktionieren kann, da nach der Zuweisung der Antwort irgendeine Art von Konvertierung fehlt. Aber wie?
Bin für jede Hilfestellung danbkar.
MfG
fips
ich sitze in den letzten Tage an einer Aufgabe, die ich bisher alleine nicht gelöst bekomme, daher mein Ersuchen nach Hilfe
Derzeit entwickle ich eine Schnittstelle aus NAV an ein Telemetriksystem. Dabei erstelle ich XMLs und sende diese an einen Webservice, das funktioniert so weit alles. Die Technik, die ich dazu nutze, habe ich mir hier abgeschaut.
In einem zweiten Schritt möchte ich einen Anhang (Lieferschein als PDF - aus einem NAV Report erstellt) an eine .../file_storage/upload_file.php?... URL senden, die Methode muss dabei 'POST' sein. Auch bis hierhin noch kein Problem, dafür kann ich die webClient.UploadFile(url, 'POST', fileName) nehmen. Zurück kommt laut Schnittstellenbeschreibung eine JSON, die wie folgt aufgebaut ist:
[
{
"name": "file.png",
"status": "OK",
"uuid":"08910afd0bfcc7aa193d40c486ca156a"
}
]
Nun habe ich jedoch keine Ahnung, wie ich die Antwort "einfange" und dann die UUID auslesen kann. Der Rückgabewert von webCient.UploadFile ist ein Byte Array, wo nun meine JSON drin steckt. Nur weiß ich nun nicht, wie ich das lesbar mache, so dass ich mir die UUID in NAV wegschreiben kann. Muss dazu sagen, dass ich nur Low Code und C/AL (und ein wenig AL) programmiert habe und kein gelernter Entwickler bin, deswegen oft bei den DotNet-Geschichten an meine Grenzen stoße.
Mein Code sieht (jetzt gerade - nach diversen trial and error) so aus:
System.Net.WebClient.'System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'
System.Net.WebResponse.'System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'
- Code:
// dotnet webclient Instanz erzeugen
webClient := webClient.WebClient();
// temporäre Datei erzeugen und den namen merken
locFile.CREATETEMPFILE;
fileName := locFile.NAME;
locFile.CLOSE;
IF locReport.SAVEASPDF(fileName) THEN BEGIN
// eigentliches uploaden
WebResponse := webClient.UploadFile(url, 'POST', fileName);
txt := WebResponse.ToString;
MESSAGE(txt);
// nach dem upload Datei wieder löschen
ERASE(fileName);
EXIT(TRUE)
END ELSE
EXIT(FALSE);
Da kommt dann aber nur ein "Byte[]" raus. Mir ist klar, dass der Code so nicht funktionieren kann, da nach der Zuweisung der Antwort irgendeine Art von Konvertierung fehlt. Aber wie?
Bin für jede Hilfestellung danbkar.
MfG
fips