TcpClient ou HttpWebRequest pour un POST ou GET

Blacknight91 Messages postés 77 Date d'inscription vendredi 26 mars 2004 Statut Membre Dernière intervention 24 avril 2007 - 18 déc. 2004 à 10:14
Blacknight91 Messages postés 77 Date d'inscription vendredi 26 mars 2004 Statut Membre Dernière intervention 24 avril 2007 - 20 déc. 2004 à 11:05
Bl@cknight

Bonjour,

Je voudrais savoir comment utiliser l'une de ces 2 classes (TcpClient ou HttpWebRequest) afin d'envoyer une requête POST ou GET dans le but d'uploader un fichier par Http.

J'ai essayé avec ses 2 classes mais en vain.
Voici le code que j'ai fait avec TcpClient:

//ce que je veux passer par un POST ou GET
string val = @"fichier=C:\apercu_but.bmp";

TcpClient client = new TcpClient("siteweb",80);
NetworkStream ns = client.GetStream();

string data = "GET /upload.php HTTP/1.0\r\n";
data += "Content-type: multipart/form-data\r\n";
data += "Content-Length: "+val.Length.ToString()+"\r\n";
data += "\r\n";
data += val+"\r\n";

ns.Write(System.Text.Encoding.ASCII.GetBytes(data),0,data.Length);
ns.Close();
client.Close();

J'ai aussi fait un essai avec HttpWebRequest, mais en vain:

string val = @"fichier=C:\apercu_but.bmp";

HttpWebRequest Req = (HttpWebRequest)WebRequest.Create("http://monsite/upload.php");
Req.Method = "GET"; // POST ou GET
Req.Referer = "Mon referer";
Req.ContentType = "application/x-www-form-urlencoded";
Req.ContentLength = data.Length;
Sw = new StreamWriter(Req.GetRequestStream());
Sw.Write(Data); // On écrit les données
Sw.Close(); // Puis on ferme le flux

Sr = new StreamReader(((HttpWebResponse)Req.GetResponse()).GetResponseStream());
Reponse = Sr.ReadToEnd(); // On choppe la réponse
Sr.Close(); // Et on ferme

Avec ses 2 méthodes d'envoi différentes, j'ai à chaque fois un echec :(
Je précise que je suis chez Free.

Quelqu'un saurait il comment s'y prendre ?
Avec un exemple clair et précis.

Merci de vos réponses

7 réponses

jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
18 déc. 2004 à 18:47
j'ai pas compris ce que tu veux faire, mais si t'es chez free cherche pas plus loin.
Free n'accepte pas asp et encore moins asp.net, il faut que tu fasses du php pour etre heberger chez free.
phpcs.com

Cyril
0
TUHABITES Messages postés 41 Date d'inscription mardi 30 septembre 2003 Statut Membre Dernière intervention 21 avril 2011
18 déc. 2004 à 20:18
Salut,
Jesusonline a raison, sur Free c'est en php. En php les uploads se font, je crois via la méthode PUT. Pour ce qui est du C# voilà un code pour transfèrer un fichier sur le serveur, mais cela ne fonctionnera pas sur tes pages perso de free.

if (File1.PostedFile != null)
{
File1.PostedFile.SaveAs(Server.MapPath("temp\\MonBeauFichier.bmp"));
}

et du côté HTML:
0
Blacknight91 Messages postés 77 Date d'inscription vendredi 26 mars 2004 Statut Membre Dernière intervention 24 avril 2007 1
19 déc. 2004 à 10:46
Bl@cknight

Merci à vous 2 de vos précisions mais cela ne m'avance guère.

Quelques précisions tt de m:
ma page perso me servant à uploader est en PHP, et fonctionne très bien quand je l'utilise via un formulaire et là méthode POST.

continuer pr vos réponses :)
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
19 déc. 2004 à 12:08
euh ???? je crois que t'as pas compris la !!!

tu ne peux pas te servir d'asp.net sur free !!!

va soir sur phpcs.com pour du php

Cyril
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Blacknight91 Messages postés 77 Date d'inscription vendredi 26 mars 2004 Statut Membre Dernière intervention 24 avril 2007 1
19 déc. 2004 à 13:03
Bl@cknight

jesusonline, pourquoi me parles tu d'asp ???

je ne développe pas en ASP.

J'ai dit que mes pages perso étaient en PHP.
Et mon programme C# appelle la page d'upload.
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
19 déc. 2004 à 13:45
ok j'avais pas du tout compris comme ca, mille excuse alors, mais ton message etait pas tout à fait clair.

donc pour faire ca, tu as deux solution soit passé par un service web, que tu auras créer en php, puis a partir de ton programme C# appeller ce service web. par contre je ne sais pas si on peut faire des services web.
Sinon l'autre méthode, c'est d'utiliser tout les longs code que tu as vu, il n'existe rien de tres simple pour faire ce genre de chose

La classe HttpWebRequest sert principalement pour asp.net et je ne pense pas qu'elle soit utilisable.
et tout le namespace system.web, sert aussi pour la plupart qu'a asp.net

regarde plutot dans system.net il me semble. Mais pour faire ce que tu veux, à moins qu'on puisse faire un service web en php, il va te falloir pas mal de code.

Encore désolé pour ma non comprehension

Cyril
0
Blacknight91 Messages postés 77 Date d'inscription vendredi 26 mars 2004 Statut Membre Dernière intervention 24 avril 2007 1
20 déc. 2004 à 11:05
Bl@cknight

J'ai essayé autre chose avec la classe Webclient.
Voici mon code:

string val = @"fichier=C:\apercu_but.bmp";
string uriString = "http://www.monsite.com/upload.php";
WebClient myWebClient = new WebClient();
myWebClient.Headers.Add("Content-Type","multipart/form-data");
byte[] byteArray = Encoding.ASCII.GetBytes(val);
byte[] responseArray = myWebClient.UploadData(uriString,"POST",byteArray);
Console.WriteLine(Encoding.ASCII.GetString(responseArray));


Mais j'ai toujours une réponse négative de la part de ma page web.
Voici le code PHP de la page:
<?
$fichier = $_POST['fichier'];
 
if (move_uploaded_file($fichier,$fichier_name))
{
echo'Upload Réussi. Adresse du Fichier: '; //L upload c est déroule avec succès
}
else
{
echo'Une erreur est survenue pendant l\'upload de: '.$fichier_name.'\n';//erreur d upload
echo'Une erreur est survenue pendant l\'upload de: '.$fichier;
}
?>


En fait la page de recoit rien via le POST. Donc elle affiche mon message d'erreur.

Quelqu'un a t il déjà utilisé la classe webClient ?
0
Rejoignez-nous