[WebClient]Envoyer en post un fichier + des données

Signaler
Messages postés
38
Date d'inscription
mardi 31 janvier 2006
Statut
Membre
Dernière intervention
4 avril 2008
-
Messages postés
2676
Date d'inscription
vendredi 28 juin 2002
Statut
Membre
Dernière intervention
13 janvier 2016
-
Bonjour à tous,

Je dois envoyer sur un serveur PHP une requête avec 4 paramètres et un fichier par la méthode POST.

Pour cà je procède en 4 étapes :

1. récupérer un contenu du serveur :

System.Net.WebClient wc = new System.Net.WebClient();
byte[] responseStream = wc.DownloadData(new Uri("http://www.google.be"));
string result = Encoding.ASCII.GetString(responseString);

OK je reçois bien le code HTML de la page http://google.be dans la variable result

2. récupérer un contenu lorsque je passe des paramètres en POST au serveur :

System.Net.WebClient wc = new System.Net.WebClient();

NameValueCollection nvc = new NameValueCollection();
nvc.Add("lang", "fr");
nvc.Add("q","webclient");

wc.QueryString = nvc;

byte[] responseStream = wc.DownloadData(new Uri("http://www.google.be/search"));
string result = Encoding.ASCII.GetString(responseString);

OK je reçois bien le code HTML de la page google de recherche pour webclient.dans la variable result

3. uploader un fichier :

System.Net.WebClient wc = new System.Net.WebClient();
byte[] responseStream = wc.UploadFile(new Uri("adresseServeur"), "c:\\essai.txt");

Et c'est là que les ennuis commencent.D'après la doc çà doit fonctionner mais j'ai pas mon serveur de test sous la main.
Il est 4h46 du matin.

4. uploader un fichier et envoyer des variables en POST : 

N'en parlons même pas. Et là je me gratte les cheveu poour associer le point 2 et le point 3

Quelqu'un peut claircir mon code !!!!

Merci
Ethan

1 réponse

Messages postés
2676
Date d'inscription
vendredi 28 juin 2002
Statut
Membre
Dernière intervention
13 janvier 2016
17
salut,

le point 2 ne te garantit pas le "POST"...il faut que tu passes explicitement le verb "POST" si tu veux du POST...

le point 3 doit marcher...sinon, insère un "POST" en deuxième paramètre....

point 4 : UploadValues avec "POST" explicite (on ne sait jamais), ensuite, normalement, tu mets un tableau de bytes contenant ton fichier avec son "nom de variable" ou si ca ne marche pas peut être un Convert.ToBase64String() de ton tableau de byte...ensuite, il y a peut être une variable "file-length" et "file-name", voir la rfc/doc de x-www-form-urlencoded...

ShareVB