[C++] Checker si une adresse web est valide???

Checker si une adresse web est valide??? [C++] - C++ - Programmation

Marsh Posté le 19-12-2005 à 20:03:55    

yop yop!
 
y'a pas moyen de savoir facilement si une adresse web est valide??
 
merci pour votre réponse.
 
@++

Reply

Marsh Posté le 19-12-2005 à 20:03:55   

Reply

Marsh Posté le 19-12-2005 à 20:30:12    

faire une requête HTTP dessus et regarder ce que le serveur te retourne (si le serveur lui-même est accessible, biensur)

Reply

Marsh Posté le 20-12-2005 à 09:50:11    

et comment qu'on fait ca? j'ai encore pas trouvé d'info dessus...
 
thx, ++

Reply

Marsh Posté le 20-12-2005 à 11:11:01    

ben, ouvertures de socket en mode connecté (TCP), tu construis une requête HTTP valide (cf la RFC) et tu l'envoies. encore en t'appuyant sur la RFC, tu analyses le message (s'il retourne un "200 OK", c'est bon, par exemple :p )
 
sinon, il y a des libs pour faire ca, je crois ... cf libcurl, il me semble

Reply

Marsh Posté le 20-12-2005 à 11:33:51    

euh... pt1 tout ca juste pour savoir si une adresse est OK...  
 
ca me parait bien la merde :S

Reply

Marsh Posté le 20-12-2005 à 12:59:28    

Oui, c'est nul. Si c'est juste pour vérifier que la syntaxe du nom est correcte, il existe sûrement des libs, sinon, tu te fais une jolie regexp.


Message édité par el muchacho le 20-12-2005 à 13:00:03

---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
Reply

Marsh Posté le 20-12-2005 à 13:16:05    

... *relis le topic*
ah ouais, tiens, j'avais pas capté que ca se limitait à ça :D
par "valide", j'avais cru comprendre qu'il voulait qu'un site soit disponible à l'adresse indiquée
 
si ca se limite à vérifier le format d'une url, been, c'est plus simple ... ca doit être quelque chose du style :
protocole://[login[:pass]@]host/path
avec une regexp, ca se fait assez vite, oui
 
(edit typo)


Message édité par theshockwave le 20-12-2005 à 13:16:54
Reply

Marsh Posté le 20-12-2005 à 13:30:09    

ouais mais justement... si je test simplement le format de l'url, ca passera pas spécialement bien non?
 
genre l'adresse: www.clubic.com & http://www.clubic.com sont valide tout comme blabla.clubic.com est également valide...
 
C'est pour ca que je voulais testé si on pouvait accéder à la page et si c le cas ben c bon... mais j'aurais juste besoin de savoir si la page est accessible!

Reply

Marsh Posté le 20-12-2005 à 13:52:11    

j'essaie de faire ca :
 

Code :
  1. try
  2.         {
  3.                 NMHTTP1->Get("asdfqr" ); // asdfqr étan une URL :-D
  4.         }
  5.         catch(Exception *e)
  6.         {
  7.                 ShowMessage(e->Message);
  8.         }


 
Mais ce con n'arrete pas de me faire l'erreur "ESockError with message 'Host Lookup Failed'".... et j'arrive pas a catcher cette $*?=)£ erreur de *%"+*ç!

Reply

Marsh Posté le 20-12-2005 à 14:11:50    

dans ce cas, c'est bien ce que je préconisais plus haut ...
tu as regardé libcurl ? parce que ca propose ce genre de services (certes, sans la gestion d'exceptions, vu que la lib est faite pour être utilisée en C avant tout ...) mais bon, embarquer une lib comme ca si c'est juste pour vérifier la "browsabilité" d'une url, c'est sur que ca peut être un peu lourd :D
 
 
Edit : d'où tu sors ce NMHTTP1 ? Tu ne ferais pas du C++ managed, par hasard ?  :heink:


Message édité par theshockwave le 20-12-2005 à 14:12:38
Reply

Marsh Posté le 20-12-2005 à 14:11:50   

Reply

Marsh Posté le 20-12-2005 à 14:16:47    

le NMHTTP1 vient de borland... c'est un TNMHTTP :D
 
il a ca comme méthodes:

Code :
  1. In TNMHTTP
  2.  OnAboutToSend
  3.  OnAuthenticationNeeded
  4.  OnFailure
  5.  OnRedirect
  6.  OnSuccess
  7. Derived from TPowersock
  8.          OnAccept
  9.          OnConnect
  10.  OnConnectionFailed
  11.          OnConnectionRequired
  12.          OnDisconnect
  13.          OnError
  14.          OnHostResolved
  15.  OnInvalidHost
  16.  OnPacketRecvd
  17.  OnPacketSent
  18.  OnRead
  19.  OnStatus


 
... mais j'arrive pas a trouver comment éviter l'erreur! (dans Borland le OnError n'est pas disponible... je sias pas pkoi!)

Reply

Marsh Posté le 20-12-2005 à 14:40:41    

:heink:  
 
dans ce cas, ouais, tu ne devrais pas avoir besoin d'autre chose, cependant, je n'utilise pas Borland, donc je ne pourrai pas trop d'aider là-dessus (cependant, les OnInvalidHost et OnFailure semblent être dédiés à te fournir le genre de service que tu recherches, non ?)

Reply

Marsh Posté le 20-12-2005 à 14:55:38    

Sous Windows, y'a la fonction UrlIs qui peut peut être te convenir:
http://msdn.microsoft.com/library/ [...] /urlis.asp


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 20-12-2005 à 15:35:09    

theshockwave a écrit :

:heink:  
 
dans ce cas, ouais, tu ne devrais pas avoir besoin d'autre chose, cependant, je n'utilise pas Borland, donc je ne pourrai pas trop d'aider là-dessus (cependant, les OnInvalidHost et OnFailure semblent être dédiés à te fournir le genre de service que tu recherches, non ?)


 
ben oui... mais c justement dans ces 2 méthodes que j'ai mis mon try, catch et ca fonctionne pas.

Reply

Sujets relatifs:

Leave a Replay

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