J'ai développé un freeware en java . C'est un proxy http que l'on peut
downloader sur http://www.httpcatcher.com
Il marche pas mal.
Je me demande cependant si il n'existe pas une méthode plus simple et
efficace pour faire ce que je veux :
J'ouvre une socket sur le serveur web, je lui envoie la requête du
navigateur.. et ensuite je dois donc recevoir la réponse..
Je lie donc les octects sur la socket en retour.. ma question est : comment
savoir que le flux d'octets est terminé ? (il n'y a pas de caractère de
fin..)
Je me base sur le Content-Length que l'on peut lire dans le header de la
réponse (je boucle tant que le nombre d'octets reçu est inférieur au CL)
Est-ce la bonne méthode ??
.. mais parfois il n'y a pas de Content-Length, alors je boucle un certain
nombre de fois..
voici le bout de code que je cherche à optimiser / simplifier .. des
suggestions ?
merci par avance
// bos est le ByteArrayOutputStream que je dois renseigner avec la réponse
du serveur, in2 est le BufferedInputStream sur la socket vers le serveur web
bos = new ByteArrayOutputStream();
// on attend la réponse du serveur
while (in2.available()==0) {
Thread.sleep(10);
}
buffer = new byte[first_buffer_size];
suite=in2.read(buffer);
bos.write(buffer);
// header_delimit : Delimitateur de la fin de l'header
int
taille_header=bos.toString().indexOf(header_delimit);
J'ai développé un freeware en java . C'est un proxy http que l'on peut downloader sur http://www.httpcatcher.com
Il marche pas mal.
Je me demande cependant si il n'existe pas une méthode plus simple et efficace pour faire ce que je veux :
J'ouvre une socket sur le serveur web, je lui envoie la requête du navigateur.. et ensuite je dois donc recevoir la réponse..
Je lie donc les octects sur la socket en retour.. ma question est :
comment
savoir que le flux d'octets est terminé ? (il n'y a pas de caractère de fin..)
Je me base sur le Content-Length que l'on peut lire dans le header de la réponse (je boucle tant que le nombre d'octets reçu est inférieur au CL)
Est-ce la bonne méthode ??
.. mais parfois il n'y a pas de Content-Length, alors je boucle un certain nombre de fois.. .....
Tu trouvera surement ton bonheur la dedans:
http://www.innovation.ch/java/HTTPClient/
Farid
Tiens, moi j'aurais conseillé http://jakarta.apache.org/commons/httpclient/
plus célèbre et qui a l'air plus à jour (les pages webs dataient de 2001 quand même sur l'autre site)
zebulon
Merci, HttpClient est très bien mais ne répond pas vraiment à ma question. En effet, celui ci fournit un InputStream et il faut gérer le flux d'octets arrivant..
"Christophe M" <mccricri_at_hotmail.com> wrote in message news:412d6b6a$
Farid wrote:
Salut,
J'ai développé un freeware en java . C'est un proxy http que l'on peut downloader sur http://www.httpcatcher.com
Il marche pas mal.
Je me demande cependant si il n'existe pas une méthode plus simple et efficace pour faire ce que je veux :
J'ouvre une socket sur le serveur web, je lui envoie la requête du navigateur.. et ensuite je dois donc recevoir la réponse..
Je lie donc les octects sur la socket en retour.. ma question est :
comment
savoir que le flux d'octets est terminé ? (il n'y a pas de caractère de fin..)
Je me base sur le Content-Length que l'on peut lire dans le header de la réponse (je boucle tant que le nombre d'octets reçu est inférieur au CL)
Est-ce la bonne méthode ??
.. mais parfois il n'y a pas de Content-Length, alors je boucle un certain
nombre de fois.. .....
Tu trouvera surement ton bonheur la dedans:
http://www.innovation.ch/java/HTTPClient/
Farid
Tiens, moi j'aurais conseillé http://jakarta.apache.org/commons/httpclient/
plus célèbre et qui a l'air plus à jour (les pages webs dataient de 2001 quand même sur l'autre site)
Merci, HttpClient est très bien mais ne répond pas vraiment à ma question.
En effet, celui ci fournit un InputStream et il faut gérer le flux d'octets
arrivant..
"Christophe M" <mccricri_at_hotmail.com> wrote in message
news:412d6b6a$1@news.vo.lu...
Farid wrote:
Salut,
J'ai développé un freeware en java . C'est un proxy http que l'on peut
downloader sur http://www.httpcatcher.com
Il marche pas mal.
Je me demande cependant si il n'existe pas une méthode plus simple et
efficace pour faire ce que je veux :
J'ouvre une socket sur le serveur web, je lui envoie la requête du
navigateur.. et ensuite je dois donc recevoir la réponse..
Je lie donc les octects sur la socket en retour.. ma question est :
comment
savoir que le flux d'octets est terminé ? (il n'y a pas de caractère de
fin..)
Je me base sur le Content-Length que l'on peut lire dans le header de la
réponse (je boucle tant que le nombre d'octets reçu est inférieur au CL)
Est-ce la bonne méthode ??
.. mais parfois il n'y a pas de Content-Length, alors je boucle un
certain
nombre de fois..
.....
Tu trouvera surement ton bonheur la dedans:
http://www.innovation.ch/java/HTTPClient/
Farid
Tiens, moi j'aurais conseillé
http://jakarta.apache.org/commons/httpclient/
plus célèbre et qui a l'air plus à jour (les pages webs dataient de 2001
quand même sur l'autre site)
Merci, HttpClient est très bien mais ne répond pas vraiment à ma question. En effet, celui ci fournit un InputStream et il faut gérer le flux d'octets arrivant..
"Christophe M" <mccricri_at_hotmail.com> wrote in message news:412d6b6a$
Farid wrote:
Salut,
J'ai développé un freeware en java . C'est un proxy http que l'on peut downloader sur http://www.httpcatcher.com
Il marche pas mal.
Je me demande cependant si il n'existe pas une méthode plus simple et efficace pour faire ce que je veux :
J'ouvre une socket sur le serveur web, je lui envoie la requête du navigateur.. et ensuite je dois donc recevoir la réponse..
Je lie donc les octects sur la socket en retour.. ma question est :
comment
savoir que le flux d'octets est terminé ? (il n'y a pas de caractère de fin..)
Je me base sur le Content-Length que l'on peut lire dans le header de la réponse (je boucle tant que le nombre d'octets reçu est inférieur au CL)
Est-ce la bonne méthode ??
.. mais parfois il n'y a pas de Content-Length, alors je boucle un certain
nombre de fois.. .....
Tu trouvera surement ton bonheur la dedans:
http://www.innovation.ch/java/HTTPClient/
Farid
Tiens, moi j'aurais conseillé http://jakarta.apache.org/commons/httpclient/
plus célèbre et qui a l'air plus à jour (les pages webs dataient de 2001 quand même sur l'autre site)
Bruno Grieder
Salut Zebulon,
A ma connaissance il n'y a pas de méthode miracle: -le content-length -le serveur ferme la socket quand il a fini (et ton client est notifié) -et le bon vieux time-out qu'il est toujours bon d'implémenter (join)
Si tu connais le content-type, tu peux faire dans le sophistiqué: balise </html>, dernière balise fermant xml etc,...
zebulon wrote:
Merci, HttpClient est très bien mais ne répond pas vraiment à ma question. En effet, celui ci fournit un InputStream et il faut gérer le flux d'octets arrivant..
"Christophe M" <mccricri_at_hotmail.com> wrote in message news:412d6b6a$
Farid wrote:
Salut,
J'ai développé un freeware en java . C'est un proxy http que l'on peut downloader sur http://www.httpcatcher.com
Il marche pas mal.
Je me demande cependant si il n'existe pas une méthode plus simple et efficace pour faire ce que je veux :
J'ouvre une socket sur le serveur web, je lui envoie la requête du navigateur.. et ensuite je dois donc recevoir la réponse..
Je lie donc les octects sur la socket en retour.. ma question est :
comment
savoir que le flux d'octets est terminé ? (il n'y a pas de caractère de fin..)
Je me base sur le Content-Length que l'on peut lire dans le header de la réponse (je boucle tant que le nombre d'octets reçu est inférieur au CL)
Est-ce la bonne méthode ??
.. mais parfois il n'y a pas de Content-Length, alors je boucle un
certain
nombre de fois.. .....
Tu trouvera surement ton bonheur la dedans:
http://www.innovation.ch/java/HTTPClient/
Farid
Tiens, moi j'aurais conseillé
http://jakarta.apache.org/commons/httpclient/
plus célèbre et qui a l'air plus à jour (les pages webs dataient de 2001 quand même sur l'autre site)
Salut Zebulon,
A ma connaissance il n'y a pas de méthode miracle:
-le content-length
-le serveur ferme la socket quand il a fini (et ton client est notifié)
-et le bon vieux time-out qu'il est toujours bon d'implémenter (join)
Si tu connais le content-type, tu peux faire dans le sophistiqué: balise
</html>, dernière balise fermant xml etc,...
zebulon wrote:
Merci, HttpClient est très bien mais ne répond pas vraiment à ma question.
En effet, celui ci fournit un InputStream et il faut gérer le flux d'octets
arrivant..
"Christophe M" <mccricri_at_hotmail.com> wrote in message
news:412d6b6a$1@news.vo.lu...
Farid wrote:
Salut,
J'ai développé un freeware en java . C'est un proxy http que l'on peut
downloader sur http://www.httpcatcher.com
Il marche pas mal.
Je me demande cependant si il n'existe pas une méthode plus simple et
efficace pour faire ce que je veux :
J'ouvre une socket sur le serveur web, je lui envoie la requête du
navigateur.. et ensuite je dois donc recevoir la réponse..
Je lie donc les octects sur la socket en retour.. ma question est :
comment
savoir que le flux d'octets est terminé ? (il n'y a pas de caractère de
fin..)
Je me base sur le Content-Length que l'on peut lire dans le header de la
réponse (je boucle tant que le nombre d'octets reçu est inférieur au CL)
Est-ce la bonne méthode ??
.. mais parfois il n'y a pas de Content-Length, alors je boucle un
certain
nombre de fois..
.....
Tu trouvera surement ton bonheur la dedans:
http://www.innovation.ch/java/HTTPClient/
Farid
Tiens, moi j'aurais conseillé
http://jakarta.apache.org/commons/httpclient/
plus célèbre et qui a l'air plus à jour (les pages webs dataient de 2001
quand même sur l'autre site)
A ma connaissance il n'y a pas de méthode miracle: -le content-length -le serveur ferme la socket quand il a fini (et ton client est notifié) -et le bon vieux time-out qu'il est toujours bon d'implémenter (join)
Si tu connais le content-type, tu peux faire dans le sophistiqué: balise </html>, dernière balise fermant xml etc,...
zebulon wrote:
Merci, HttpClient est très bien mais ne répond pas vraiment à ma question. En effet, celui ci fournit un InputStream et il faut gérer le flux d'octets arrivant..
"Christophe M" <mccricri_at_hotmail.com> wrote in message news:412d6b6a$
Farid wrote:
Salut,
J'ai développé un freeware en java . C'est un proxy http que l'on peut downloader sur http://www.httpcatcher.com
Il marche pas mal.
Je me demande cependant si il n'existe pas une méthode plus simple et efficace pour faire ce que je veux :
J'ouvre une socket sur le serveur web, je lui envoie la requête du navigateur.. et ensuite je dois donc recevoir la réponse..
Je lie donc les octects sur la socket en retour.. ma question est :
comment
savoir que le flux d'octets est terminé ? (il n'y a pas de caractère de fin..)
Je me base sur le Content-Length que l'on peut lire dans le header de la réponse (je boucle tant que le nombre d'octets reçu est inférieur au CL)
Est-ce la bonne méthode ??
.. mais parfois il n'y a pas de Content-Length, alors je boucle un
certain
nombre de fois.. .....
Tu trouvera surement ton bonheur la dedans:
http://www.innovation.ch/java/HTTPClient/
Farid
Tiens, moi j'aurais conseillé
http://jakarta.apache.org/commons/httpclient/
plus célèbre et qui a l'air plus à jour (les pages webs dataient de 2001 quand même sur l'autre site)
Vincent Cantin
Il y a moyen de connaitre la fin d'un InputStream, regarde dans la documentation de Java a la class InputStream. Si tu lis un octet et que la valeur retournee est -1, alors c'est que le stream est fini, et tu dois le fermer avec inputStream.close(); et ensuite fermer ta socket avec (si tu as ouvert un outputstream il faut le fermer d'abord : outputStream.close();) socket.close();
Vincent
Il y a moyen de connaitre la fin d'un InputStream, regarde dans la
documentation de Java a la class InputStream.
Si tu lis un octet et que la valeur retournee est -1, alors c'est que le
stream est fini, et tu dois le fermer avec inputStream.close(); et ensuite
fermer ta socket avec (si tu as ouvert un outputstream il faut le fermer
d'abord : outputStream.close();) socket.close();
Il y a moyen de connaitre la fin d'un InputStream, regarde dans la documentation de Java a la class InputStream. Si tu lis un octet et que la valeur retournee est -1, alors c'est que le stream est fini, et tu dois le fermer avec inputStream.close(); et ensuite fermer ta socket avec (si tu as ouvert un outputstream il faut le fermer d'abord : outputStream.close();) socket.close();