Hallo allerseits,
ich brüte schon seit einiger Zeit an folgendem Problem: Ich möchte über einen GET http Request ein PDF von unserem Buchhaltungsprogramm herunterladen.
Der unten angegebene Code funktionierte zum Download eines ZIP (gezippte PDF's) tadellos (natürlich mit entsprechend anderer URL). Der Download des PDF erzeugt auch keine Fehlermeldung, das PDF wird gespeichert, enthält jedoch keine Daten (Öffnen des PDF erfolgt mit folgender Fehlermeldung: Adobe Acrobat Reader konnte "RE-1578" nicht öffnen, da der Dateityp nicht unterstützt wird oder die Datei beschädigt ist). Mir ist aufgefallen das ResponseBody und ResponseText unterschiedlichen Inhalt haben (ResponseBody vom Datentyp Byte ? ResponseText vom Datentyp String ?).
Kann mir da eventuell jemand weiterhelfen ?
Grüße Bernhard
Function PDF_einlesen() ' Rechnungen / Mahnungen als PDF einlesen
' API Request
Dim ApiURL As String
Dim RequestString As String
Dim Resource As String
Dim InvoiceID As String
Dim HeadAuthorization As String
Dim HeadAccept As String
Dim HeadContent_type As String
Dim ValHeadAuth As String
Dim ValHeadAccept As String
Dim ValHeadContent_type As String
Dim Request As MSXML2.ServerXMLHTTP60
Dim iFileHandle As Integer
ApiURL = "https://my.xxxxxxx.de/api/v1/"
Resource = "Invoice"
InvoiceID = "55575144"
HeadAuthorization = "Authorization": ValHeadAuth = "xxxxxxxxxxxxxxxx"
HeadAccept = "Accept": ValHeadAccept = "application/xml"
HeadContent_type = "Content-type": ValHeadContent_type = "application/x-www-form-urlencoded"
RequestString = ApiURL & Resource & "/" & InvoiceID & "/getPdf" & "?"
Set Request = New ServerXMLHTTP60
Request.Open "GET", RequestString, False
Request.SetRequestHeader HeadAuthorization, ValHeadAuth
Request.SetRequestHeader HeadAccept, ValHeadAccept
Request.SetRequestHeader HeadContent_type, ValHeadContent_type
Request.Send
If Request.Status = 200 Then
Dim ostream As Object
Set ostream = CreateObject("ADODB.Stream")
ostream.Open
ostream.Type = 1 ' File überschreiben wenn es schon existiert !
ostream.Write Request.ResponseBody
ostream.savetofile "C:\Users\43664\Desktop\RE-1578.pdf", 2
ostream.Close
End If
Request.Abort
End Function