Buongiorno a tutti espongo subito il mio problema.
Una società ci ha realizzato, per una collaborazione, un'API raggiungibile in PHP che accetta 3 parametri testuali e 3 file.
Nella scarna documentazione mi hanno assicurato che è necessario chiamare l'API con un semplice FORM POST di tipo "enctype" con 3 campi di tipo TEXT e 3 campi FILE.


In pratica i nostri utenti con un semplice click passano dei dati ai nostri partner con i quali hanno stipulato un contratto, quindi di fatto non compilano alcun form, ma è tutto simulato, anche perchè tanto le informazioni quanto i file risiedono già sul nostro server.


Partiamo dal presupposto che l'attuale piattaforma è in ASP.
Ho trovato questo che sembra fare al caso mio.


'sends multipart/form-data To the URL using WinHttprequest/XMLHTTP
'FormData - binary (VT_UI1 | VT_ARRAY) multipart form data
Function WinHTTPPostRequest(URL, FormData, Boundary)
Dim http 'As New MSXML2.XMLHTTP

'Create XMLHTTP/ServerXMLHTTP/WinHttprequest object
'You can use any of these three objects.
Set http = CreateObject("WinHttp.WinHttprequest.5")
'Set http = CreateObject("MSXML2.XMLHTTP")
'Set http = CreateObject("MSXML2.ServerXMLHTTP")

'Open URL As POST request
http.Open "POST", URL, False

'Set Content-Type header
http.setRequestHeader "Content-Type", "multipart/form-data; boundary=" + Boundary

'Send the form data To URL As POST binary request
http.send FormData

'Get a result of the script which has received upload
WinHTTPPostRequest = http.responseText
End Function

Unico dubbio: come diavolo imposto "FormData"?
La spiegazione in inglese parla di "binary (VT_UI1 | VT_ARRAY)", ma io sono sinceramente spiazzato.
Ho trovato anche questo script che dovrebbe servire a convertire il file in codice binario(?)

Function ReadBinaryFile(FileName)
Const adTypeBinary = 1

'Create Stream object
Dim BinaryStream
Set BinaryStream = CreateObject("ADODB.Stream")

'Specify stream type - we want To get binary data.
BinaryStream.Type = adTypeBinary

'Open the stream
BinaryStream.Open

'Load the file data from disk To stream object
BinaryStream.LoadFromFile FileName

'Open the stream And get binary data from the object
ReadBinaryFile = BinaryStream.Read
End Function


Come usarli insieme e riuscire quindi ad inviare un form all'API?
Inoltre come convertire in binario anche i dati testuali dato che la chiamata http è di tipo "multipart/form-data"?
Avete idee?

Grazie!