[Java] Sockets et http

Sockets et http [Java] - Java - Programmation

Marsh Posté le 28-01-2004 à 15:37:23    

voilà, je dois me connecter à un serveur http et envoyer une requête très simple et la lire. Simplement je n'arrive jamais à lire mon InputStream (j'attends toujours que le inputStream soit ready), et je me demande bien de quoi ça peut venir ...
 
Voilà mon code

Code :
  1. public class ClientHTTP_TCP {
  2. public static void main(String[] args) {
  3.  PrintStream osw;
  4.  InputStreamReader isr;
  5.  char[] answer = new char[50];
  6.  try {
  7.   Socket s = new Socket(InetAddress.getByName("www.google.ch" ), 80);
  8.   osw = new PrintStream(s.getOutputStream());
  9.   isr = new InputStreamReader(s.getInputStream());
  10.   osw.print(new String("GET / HTTP/1.0\n" ));
  11.   System.out.println("OutputStream writed" );
  12.   osw.flush();
  13.   System.out.println("OutputStream flushed" );
  14.   while (!isr.ready()) {System.out.println("Wainting for the Reader" );}
  15.   isr.read(answer, 0, 50);
  16.   System.out.println("InputStream read" );
  17.   System.out.println("answer is : " + String.copyValueOf(answer));
  18.   osw.close();
  19.   isr.close();
  20.   s.close();
  21.  } catch (Exception e) {
  22.   e.printStackTrace();
  23.  }
  24. }
  25. }


Message édité par Longfield le 28-01-2004 à 15:39:43
Reply

Marsh Posté le 28-01-2004 à 15:37:23   

Reply

Marsh Posté le 28-01-2004 à 16:40:50    

[:fear]
 
 
 
UrlConnection ...


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 28-01-2004 à 16:50:48    

c'est à dire ???

Reply

Marsh Posté le 28-01-2004 à 16:53:00    

c-a-d va regarder cette classe dans la javadoc


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 28-01-2004 à 16:59:06    


ca dépend, si c'est pour faire des trucs un peu complexe, je préfère utiliser une socket aussi, moi ...
 
Mais si le besoin c'est un truc simple (récupérer la page d'un site), effectivement, un bon new Url("http://www.google.ch" ).openStream() ca va plus vite :)
 
à mon avis, ton truc ne marche pas parce que tu n'as pas envoyer le double retour à la ligne à la fin de ta requête. En plus, le retour à la ligne c'est \r\n, pas seulement \n en HTTP ...
 
essaye ca :
osw.print(new String("GET / HTTP/1.0\r\n\r\n" ));  
 
 
(j'ai pas bien compris l'intérêt de transformer ton flux en PrintStream)


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 28-01-2004 à 17:00:57    

benou a écrit :


ca dépend, si c'est pour faire des trucs un peu complexe, je préfère utiliser une socket aussi, moi ...

bof, c'est quoi l'interet d'avoir la socket par rapport à un bete stream ?


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 28-01-2004 à 17:07:50    

the real moins moins a écrit :

bof, c'est quoi l'interet d'avoir la socket par rapport à un bete stream ?


ben déjà, tu contrôle vachement mieux ce que tu envoies et ce que tu reçois en écrivant directement plutot qu'en utilisant les méthodes à la con de URLConnection.
 
Ensuite, dans le cas d'erreur HTTP, y a des cas où tu n'obtiens pas le résultat de la requête mais une exception à la con, ce qui peut être gênant.
 
Ensuite, la gestion des proxy de la classe URL est hyper mal foutu.
 
une petite critique de la classe URL là : http://www.innovation.ch/java/HTTP [...] lient.html


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 28-01-2004 à 17:09:09    

ok j'achete


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 28-01-2004 à 17:10:03    

(cela dit sur urlconnection t'as deux getStream et donc t'as des Stream tout ce qu'il y a de standard. pour le reste ok)


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 28-01-2004 à 17:10:15    

c'est quoi ce HTTPClient dont ils parlent?


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 28-01-2004 à 17:10:15   

Reply

Marsh Posté le 28-01-2004 à 17:19:45    

the real moins moins a écrit :

c'est quoi ce HTTPClient dont ils parlent?


c'est une librairie pour faire du client HTTP en java ... mais ce truc là n'a jamais été terminé : il est en version 0.3


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 28-01-2004 à 17:30:23    

ha ok
et commons-net tu l'a déjà essayé pour l'http?


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 28-01-2004 à 17:55:12    

the real moins moins a écrit :

ha ok
et commons-net tu l'a déjà essayé pour l'http?


 :heink:  
 

Citation :

This version supports Finger, Whois, TFTP, Telnet, POP3, FTP, NNTP, SMTP, and some miscellaneous protocols like Time and Echo as well as BSD R command support


 
y a pas de http dans commons-net ...


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 28-01-2004 à 18:37:36    

ha proute, je pensais, désolé


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 28-01-2004 à 19:20:31    

Alors, c'est dans le cadre d'un TP sur les socket que j'ai fait comme ça, donc voilà, allez pas chercher plus loin !!!
 
Sinon, j'ai réussi à le faire tourner pour finir sans revenir voir par ici entre temps, et le code au niveau JAVA était tout-à-fait correct, l'erreur venait, comme l'a très bien et très exactement dit par benou, dans la commande que j'envoyais au serveur www !!!! il manquait toute la merde à la fin ...
 
Voilà, merci quand même les gars !!!

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed