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

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  [C#] récuperer un flux http

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C#] récuperer un flux http

n°1761023
creusois
Posté le 17-07-2008 à 18:00:46  profilanswer
 

Je cherche à récuperer un flux http en C#, mais je me heurte à une erreur que je ne comprends pas.
 
J'ai une adresse interne imaginons http://toto:9443/Web/PingServlet qui me renvoie tout simplement 1.
 
Quand j'essaye de faire un simpe bouton qui envoie le resultat dans un richtext, j'ai une exception dont le message est : Le serveur à commis une violation de protocole. Section=ResponseStatusLine
 
Quand je teste avec http://www.google.com j'ai bien toutes les données. Est-ce que je dois me documenter sur le servlet qui me répond ?
 
 
Le code est :
 

Code :
  1. namespace TestHTTPrequest
  2. {
  3.     public partial class Form1 : Form
  4.     {
  5.         HttpWebResponse HttpWResponse = null;
  6.         StreamReader sr = null;
  7.         public Form1()
  8.         {
  9.             InitializeComponent();
  10.         }
  11.         private void button1_Click(object sender, EventArgs e)
  12.         {
  13.             try
  14.             {
  15.                 HttpWebRequest HttpWRequest = (HttpWebRequest)WebRequest.Create(textBox1.Text);
  16.                 HttpWResponse = (HttpWebResponse)HttpWRequest.GetResponse();
  17.                 sr = new StreamReader(HttpWResponse.GetResponseStream());
  18.                 richTextBox1.Text = sr.ReadToEnd();
  19.             }
  20.             catch (Exception ee)
  21.             {
  22.                 MessageBox.Show("ERREUR!" + ee.Message);
  23.             }
  24.             finally
  25.             {
  26.                 if (HttpWResponse != null)
  27.                     HttpWResponse.Close();
  28.                 if (sr != null)
  29.                     sr.Close();
  30.             }
  31.            
  32.         }
  33.     }
  34. }


 
Merci

mood
Publicité
Posté le 17-07-2008 à 18:00:46  profilanswer
 

n°1761050
MagicBuzz
Posté le 17-07-2008 à 19:53:26  profilanswer
 

ben s'il envoie "1" sans les header HTTP, logique non ?
 
ou si y'a bien les header http, mais la section data ne contient que 1 ?
 
tu peux aussi essayer avec la classe webclient, ça te retourne directement du texte de mémoire, et non un stream.

Message cité 1 fois
Message édité par MagicBuzz le 17-07-2008 à 19:54:35
n°1761254
creusois
Posté le 18-07-2008 à 09:38:32  profilanswer
 

MagicBuzz a écrit :

ben s'il envoie "1" sans les header HTTP, logique non ?
 
ou si y'a bien les header http, mais la section data ne contient que 1 ?
 
tu peux aussi essayer avec la classe webclient, ça te retourne directement du texte de mémoire, et non un stream.


 
Merci MagicBuzz pour ton aide. Je tente de suivre ton conseil, mais j'ai exactement la même erreur avec ce type de code :
 

Code :
  1. public partial class Form1 : Form
  2.     {
  3.         WebClient wc = new WebClient();
  4.         public Form1()
  5.         {
  6.             InitializeComponent();
  7.         }
  8.         private void button1_Click(object sender, EventArgs e)
  9.         {
  10.             try
  11.             {
  12.                 Byte[] b = wc.DownloadData(textBox1.Text);
  13.                 richTextBox1.Text = b.ToString();
  14.             }
  15.             catch (Exception ee)
  16.             {
  17.                 MessageBox.Show("ERREUR!" + ee.Message);
  18.             }
  19.         }
  20.     }

n°1761314
MagicBuzz
Posté le 18-07-2008 à 11:03:29  profilanswer
 

Donc j'ai bien l'impression que ton serveur envoie une information formattée de façon incorrecte...
 
Est-ce que tu peux faire ce test ?
 
En ligne de commande, tapes :
 


telnet toto 9443
GET http://toto:9443/Web/PingServlet HTTP/1.0
 
 


(ps : sous Windows, il n'affiche pas la seconde ligne pendant que tu la tapes, donc fait gaffe ;))
 
=> Et poster ici ce que tu as comme réponse.
 
Par exemple, avec http://www.google.com :
 


 
 
 
HTTP/1.0 302 Moved Temporarily
Location: http://www.google.fr/
Cache-Control: private
Content-Type: text/html; charset=UTF-8
Set-Cookie: PREF=ID=ec65c6bd4483d940:TM=1216371612:LM=1216371612:S=sDf_UcUTmpBRv
qXY; expires=Sun, 18-Jul-2010 09:00:12 GMT; path=/; domain=.google.com
Date: Fri, 18 Jul 2008 09:00:12 GMT
Server: gws
Content-Length: 218
X-Cache: MISS from fw.concerto-sas.local
Proxy-Connection: close
 
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
                                                                              <T
ITLE>302 Moved</TITLE></HEAD><BODY>
                                   <H1>302 Moved</H1>
                                                     The document has moved
                                                                           <A HR
EF="http://www.google.fr/">here</A>.
</BODY></HTML>
 
 
Perte de la connexion à l'hôte.


 
=> Moi j'ai bien l'impression que le "1" il l'envoie à la place du "HTTP/1.0"... Et là je comprends parfaitement pourquoi il y a une violation de protocole. Si c'est le cas, t'as plus qu'à passer par des Sockets pour travailler comme via cette commande telnet.

Message cité 1 fois
Message édité par MagicBuzz le 18-07-2008 à 11:05:10
n°1761374
creusois
Posté le 18-07-2008 à 11:57:05  profilanswer
 

MagicBuzz a écrit :


=> Moi j'ai bien l'impression que le "1" il l'envoie à la place du "HTTP/1.0"... Et là je comprends parfaitement pourquoi il y a une violation de protocole. Si c'est le cas, t'as plus qu'à passer par des Sockets pour travailler comme via cette commande telnet.


 
Exact MagicBuzz,
 
Je suis egallement persuadé qu'il renvoie simplement "1". Il faut donc travailler via des sockets ? As-tu une piste à me donner un lien ? Car je n'ai aucune idée.
 
En gros il s'agit d'une petite appli qui permet de voir si un service web est actif. Donc on appelle un servlet qui nous renvoie 1.


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

  [C#] récuperer un flux http

 

Sujets relatifs
Programmation C++ et CPLEX[Résolu][C]condition de sortie d'une boucle while = retour chariot
[C] Manipulation de chaines dans un fichierIndicer les lignes d'un fichier texte avec C++
[Resolu] asp.net/C#/SQl server2005 affichage resultats rechercheExtraire lignes d'un fichier .csv avec Visual C++
[C] Operand incorect .Dessiner une belle ligne au stylet
[C# XML Serialize .net 2.0]récupérer un ID auto-incrémenté après son insert
Plus de sujets relatifs à : [C#] récuperer un flux http


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