ciao Gabriella,
forza e coraggio, non è complesso ma ci sono alcune parti che devi imparare a conoscere.
Cominciamo eliminando il superfluo.
Non riesco a trovare MultipartEntity , mi dice tipo non definito ???? che Imports devo aggiungere ?
Non la trovi perché è una classe Java che non puoi usare in un programma .NET. Inoltre, non cercare di tradurre linea per linea: cerca invece di capire l'intento di quella routine affinché tu possa riprodurlo nella tua applicazione VB.NET.
In .NET dobbiamo usare delle classi equivalenti e l'esempio che ti avevo linkato usa, per l'appunto, quelle classi.
Anche se sembra complesso a prima vista, quell'esempio ti permetterà di arrivare alla soluzione quindi tanto vale prenderlo di petto e cercare di capire che classi usa e a che scopo.
Se pensi che possa semplificarti la comprensione, crea una nuova applicazione Console in VB.NET in cui cominci a fare dei test usando quel codice. In questo modo non avrai altre distrazioni e potrai concentrarti solo su quello.
Ti presento brevemente le classi usate nell'esempio (mi riferisco a
questo).
Se hai bisogno di un aiuto nel convertire il codice C# a VB.NET, usa questo convertitore.
http://converter.telerik.com/Le classi che ti indico qui sotto sono linkate alla documentazione, in modo che tu possa vedere che i riferimenti e gli Imports da aggiungere (ma Visual Studio ti aiuta in questo perché se fai CTRL + . mentre sei posizionata sul nome della classe ti suggerisce automaticamente gli Imports necessari).
- La classe HttpClient è quella che si occuperà materialmente di inviare le richieste web al server remoto, grazie al suo metodo PostAsync, che accetta un URL e un contenuto da inviare.
- Il contenuto sarà un oggetto di tipo HttpContent, che è una classe base per vari tipi di contenuto. Nel nostro caso specifico, il contenuto della richiesta sarà di tipo multipart e perciò si usa la classe MultipartFormDataContent, che è una sorta di contenitore per vari altri tipi di contenuto. Infatti dispone di un metodo Add che userai per aggiungere i 3 diversi tipi di informazione che devi inviare al server, ovvero i parametri, l'indice e i dati che mi sembrano essere tutti e 3 dei file (ti prego di confermarmelo).
- Se sono veramente dei file, puoi creare 3 istanze di StreamContent che andranno tutte e 3 aggiunte al MultipartFormDataContent mediante il suo metodo Add di cui abbiamo parlato. Quando istanzi uno StreamContent, devi fornirgli un oggetto Stream, che puoi ottenere dal metodo statico File.OpenRead, fornendo il percorso completo del file.
- Quando finalmente hai preparato l'oggetto MultipartFormDataContent comprensivo di tutte le sue 3 parti, passalo come argomento al metodo PostAsync dell'HttpClient di cui parlavamo all'inizio.
- Il metodo PostAsync è asincrono. Dimmi se hai mai usato il pattern di programmazione asincrona basato sui task, in caso chiariamo anche quello. Comunque, dal PostAsync otterrai un oggetto di tipo HttpResponseMessage. Esso ha una proprietà Status che dovrai controllare per sapere se è 201, come nella routine Java. Dato che lo status qui non è propriamente un numero intero ma un'enumerazione, dovrai compararlo con HttpStatusCode.Created, che è il significato dello status 201.
Per quanto sembri difficile, non ti demoralizzare. Eventualmente fai domande che ti permettono di fare ogni volta un passo avanti.
ciao,
Moreno