Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    97

    [ASP] 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 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.

    Partiamo dal presupposto che l'attuale piattaforma è in ASP, ho provato due approcci senza successo:
    il primo AJAX scatenato dal click di un utente con un form nascosto e il secondo lato server con l'oggetto ServerXMLHTTP.

    Il mio problema viene sempre su come passare i 3 file.
    Nel primo caso non posso riempire (di nascosto) i campi di tipo file perchè i files sono già caricati sul nostro server. Di contro sarebbe assurdo chiedere al cliente di riempire un form con file che sono già nel suo pannello di controllo.
    Nel secondo caso, il metodo accetta solo POST e GET, come faccio a passare i files? Avevo pensato di decodificare i files e di inviarli come stringa, ma parliamo di file che possono arrivare anche a 10 mb...

    Io avevo un'altra idea, il cliente segna i prodotti che vuole condividere e un batch serale carica i file in FTP e un file XML con le relative info che poi i nostri partner processeranno per fatti loro.
    Meno lavoro per me!

    Ovviamente la speranza è quella di riuscire ad integrare tutto con l'API messa da loro a disposizione.

    Idee? Dubbi? Soluzioni?

    Grazie!

  2. #2
    Se i file stanno sul server genera le richieste HTTP dal server.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    97
    Quote Originariamente inviata da MItaly Visualizza il messaggio
    Se i file stanno sul server genera le richieste HTTP dal server.
    E poi come chiamo l'API?
    Qualche esempio?

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    97
    Ho trovato questo che sembra fare al caso mio.
    Unico dubbio: come diavolo imposto "FormData"?
    La spiegazione in inglese parla di "binary (VT_UI1 | VT_ARRAY)", ma io sono sinceramente spiazzato.

    Grazie per la pazienza!

    '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

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    97
    Ragazzi ragiono insieme a voi, questa funzione sembra essere utile per convertire i miei files e in qualche modo includerli nel "FormData". Mi sfugge ancora come. Che oggetto è sto formData?
    In una chiamata semplice l'argomento del send sarebbe stato "param1=abc&param2=def&param3=ghi".
    Io come lo setto invece?
    ps: mi rendo conto che la discussione potrebbe essere diventata più da ASP, però magari il carattere generale del problema ne potrebbe ancora giustificare la permanenza qui? Altrimento forse è il caso di spostarla?

    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

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Inizialmente non hai specificato il linguaggio che usi.
    Da quel che vedo mi pare sia VB (che versione?)
    VB ha un forum dedicato: Visual Basic e .NET Framework.

    Specifica la versione di VB che usi, io nel frattempo sposto la discussione nel forum corretto.

    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    97
    Quote Originariamente inviata da LeleFT Visualizza il messaggio
    Inizialmente non hai specificato il linguaggio che usi.
    Da quel che vedo mi pare sia VB (che versione?)
    VB ha un forum dedicato: Visual Basic e .NET Framework.

    Specifica la versione di VB che usi, io nel frattempo sposto la discussione nel forum corretto.

    Ciao.
    Forse meglio in ASP ?

  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Sposto in ASP.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.