Hallo,
ich kämpfe seit einiger Zeit mit der Nutzung von einer REST API.
Damit will ich eine Datei hochladen.
Die API kann oder will kein BASE64, die Daten werden binär erwartet.
Die Programmierung habe ich soweit im Griff, auch die Boundaries bei "multiform" funktionieren.
Leider kommt die Datei bei der API aber fehlerhaft an.
Über CURL kann ich das hochladen, dazu verwende ich (unter anderem) folgende Option:
"-F importerZipPackage=""@" & strPacketPath & _
";type=application/x-zip-compressed""" Ich möchte das aber über XPTTP machen, damit ich den Response richtig auswerten kann.
Über die Kommandozeile und CURL habe ich keine Möglichkeit gefunden, die Rückgabe auszuwerten.
Beispiel: ( nur die wichtigen Abschnitte)
Const strBoundary As String = _
"---------------------------WebKitFormBoundary7MA4YWxkTrZu0gW"
strBeginBoundary = "--" & strBoundary ' Einleitende Sequenz
strEndBoundary = "--" & strBoundary & "--" ' Abschluss Sequenz
strRequest = ""
add strRequest, strBeginBoundary, True
add strRequest, "Content-Disposition: form-data;" & _
"name=""importerZipPackage""; filename=""uploadPacket.zip""", True
add strRequest, "Content-Type: application/x-zip-compressed", True
add strRequest, "", True
add strRequest, strFileData, True
add strRequest, "", True
add strRequest, strEndBoundary
Set XMLHttp = New XMLHttp
With XMLHttp
.Open "POST", strUploadURL, False, strUserName, strPasswort
Call .setRequestHeader("Auth-Token", strAuthKey)
Call .setRequestHeader("Content-Type", "multipart/form-data; boundary=" _
& strBoundary)
Call .send(strRequest)
End With
lngStatus = XMLHttp.Status
strResponse = XMLHttp.responseText Zusatzfunktion:
Private Sub add(strVariable As Variant, strNewText As Variant, Optional _
bolNewLine As Boolean = False)
strVariable = strVariable & strNewText
If bolNewLine Then strVariable = strVariable & vbNewLine
End Sub Nun geht es also nur um den String mit den Nutzdaten. (strFileData)
Kann mir jemand ein Beispiel geben, wie ich das korrekt aufbauen kann?
Das wäre echt super hilfreich ...
Vielen Dank |