Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3066 connectés 

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  [C#] Impossible d'effectuer une requete HTTP POST avec HttpWebRequest

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C#] Impossible d'effectuer une requete HTTP POST avec HttpWebRequest

n°1826747
Rapha222
Posté le 14-12-2008 à 12:18:23  profilanswer
 

Salut,
J'essaye d'effectuer une requete Http POST en multipart/form-data pour simuler l'envoi d'un fichier mais la requete ne semble pas s'effectuer en entier (je n'ai que les headers de la requete HTTP) :

Citation :

[root@localhost rapha]# python server.py
IP :  ('127.0.0.1', 32851)
POST / HTTP/1.1
User-Agent: FilesApi/FilesAPI v0.1 (Unix 2.6.27.7)
Referer: http://api.files.getwebb.org
Content-Type: multipart/form-data; boundary=-------------------906641065
Content-Length: 1845
Expect: 100-continue
Connection: keep-alive
Host: 127.0.0.1


 
Alors que normalement, je devrais avoir quelque chose comme ceci :

Citation :

[root@localhost rapha]# python server.py
IP :  ('127.0.0.1', 32851)
POST / HTTP/1.1
User-Agent: FilesApi/FilesAPI v0.1 (Unix 2.6.27.7)
Referer: http://api.files.getwebb.org
Content-Type: multipart/form-data; boundary=-------------------906641065
Content-Length: 1845
Expect: 100-continue
Connection: keep-alive
Host: 127.0.0.1
 
-------------------906641065
Content-Disposition: form-data; name="fichier1"; filename="icon.png"
Content-Type: application/octet-stream
 
[I](contenu de l'image)[/I]
---------------------906641065Content-Disposition: form-data; name="nb_fichiers"
 
1
---------------------906641065
Content-Disposition: form-data; name="votes"
 
on
---------------------906641065--


 
Voici mon code :

Code :
  1. string Boundary = "-------------------" + (new System.Random()).Next(); // Séparateur des éléments du formulaire
  2. string Data = Boundary + "\r\n";
  3. // Création de la requête pour les fichiers
  4. int FichierNo = 0;
  5. foreach(string Fichier in this.FilesList) {
  6. FichierNo++;
  7. System.IO.FileInfo FileInfos = new System.IO.FileInfo(Fichier);
  8. Data += "Content-Disposition: form-data; name=\"fichier" + FichierNo + "\"; filename=\"" + FileInfos.Name + "\"\r\n"; // Nom du fichier
  9.               Data += "Content-Type: application/octet-stream\r\n\r\n"; // Mimetype  
  10. Data += (new System.IO.StreamReader(Fichier)).ReadToEnd()+ "\r\n"; // Ajout du contenu du fichier
  11. Data += "--" + Boundary; // Fin de l'enregistrement
  12. }
  13. // Nombre de fichiers
  14. Data += "Content-Disposition: form-data; name=\"nb_fichiers\"\r\n\r\n";
  15. Data += FichierNo + "\r\n";
  16. Data += "--" + Boundary;
  17. // Activer le vote
  18. if(this.EnableVotes) {
  19. Data += "\r\nContent-Disposition: form-data; name=\"votes\"\r\n\r\n";
  20. Data += "on\r\n";
  21. Data += "--" + Boundary;
  22. }
  23. // Envoyer par email
  24. if(this.Email != null) {
  25.               Data += "\r\nContent-Disposition: form-data; name=\"check_email\"\r\n\r\n";
  26. Data += "on\r\n";
  27. Data += "--" + Boundary + "\r\n";
  28. Data += "Content-Disposition: form-data; name=\"email\"\r\n\r\n";
  29. Data += this.Email + "\r\n";
  30. Data += "--" + Boundary;
  31. }
  32. // Fin de requete
  33. Data += "--\r\n";
  34. byte[] DataBytes = (new System.Text.ASCIIEncoding()).GetBytes(Data);
  35. // Envoi de la requete    
  36. System.Net.HttpWebRequest Request = (System.Net.HttpWebRequest) System.Net.WebRequest.Create("http://127.0.0.1/" );
  37. Request.Method = "POST";
  38. Request.UserAgent = this.Agent;
  39. Request.Referer = "http://api.files.getwebb.org";
  40. Request.ContentType = "multipart/form-data; boundary=" + Boundary;
  41. Request.ContentLength = DataBytes.Length;
  42. // Envoi des données
  43. System.IO.Stream PostData = Request.GetRequestStream();
  44. PostData.Write(DataBytes, 0, DataBytes.Length);
  45. PostData.Close();


 
Je ne comprends vraiment pas, parce que meme le code du MSDN ne marche pas :? : http://msdn.microsoft.com/fr-fr/li [...] S.80).aspx
 
Il faut faire quelque chose en plus et j'aurais loupé ca ?
 
Note : Mon code pour intercepter la requete en Python marche avec un navigateur, donc ca ne peut pas etre ca le problème :( .
Merci


Message édité par Rapha222 le 14-12-2008 à 12:19:56

---------------
Hébergez vos fichiers et vos images jusqu'à 50Mo Gratuitement
mood
Publicité
Posté le 14-12-2008 à 12:18:23  profilanswer
 

n°1826992
moi23372
Posté le 14-12-2008 à 21:47:24  profilanswer
 

A mon avis, c'est à la ligne 58 et 59 que ça merde.
Tu récupères un stream dans lequel tu essayes de réécrire dedans. ça m'a l'air pas normal du tout.
 
A mon avis, tu dois avoir une méthode sur l'objet "Request" pour envoyer l'information. En tout cas, ces deux lignes me semble totalement incohérente.  
 


---------------
quand un homme raisonne mal c'est qu'il n'a pas les données pour raisonner mieux (diderot)
n°1826997
Rapha222
Posté le 14-12-2008 à 22:26:52  profilanswer
 

C'est ce qui est dans les exemples du MSDN et sur les sources que l'on peut trouver sur le Net malheureusement :'(


---------------
Hébergez vos fichiers et vos images jusqu'à 50Mo Gratuitement
n°1827185
Rapha222
Posté le 15-12-2008 à 11:58:12  profilanswer
 

Ca ne marchera pas puisqu'il n'y a pas d'erreur  :sarcastic:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  [C#] Impossible d'effectuer une requete HTTP POST avec HttpWebRequest

 

Sujets relatifs
instanciation de classe impossible c++/clirequête sql sur deux colonnes
C#: Comment faire un tableau de structs ?Tableau en C [niveau faible ^^]
[C#] Insérer une ligne dans tabeau Excel[ASP.NET & C#] Pagination : remplacer les numéros par "..."
Erreur requête SQL dans ACCESSC appel Mathématica???
Erreur pendant une requète 
Plus de sujets relatifs à : [C#] Impossible d'effectuer une requete HTTP POST avec HttpWebRequest


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR