• User

    Richiamare un API, problemi

    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!