OVH Cloud OVH Cloud

récupérer le 'code-status' après une requête http

3 réponses
Avatar
christophe Raverdy
Bonjour

Je suis en train de finir un programme en C qui doit notamment lire des
fichiers qui contiennent des urls et indiquer le statut de ces url (200,
404,...)

Pour résumer :
- je sais gérer popen depuis ce programme (je l'ai fait par exemple pour des
requêtes whois)
- depuis le shell (bash) je sais rediriger (temporairement) la sortie
standard vers un fichier (man wget par exemple).

Par contre, j'essaye depuis ce midi d'exploiter la commande wget :

craverdy@Kyoto:~/fur> wget --spider -S http://usenet-fr.net

--15:36:58-- http://usenet-fr.net/
=> `index.html.4'
Résolution de usenet-fr.net... 217.24.82.4
Connexion vers usenet-fr.net[217.24.82.4]:80...connecté.
requête HTTP transmise, en attente de la réponse...
1 HTTP/1.1 200 OK
2 Date: Thu, 08 Sep 2005 13:36:58 GMT
3 Server: Apache/1.3.33 (Unix) mod_ruby/1.0.5 Ruby/1.8.0
4 Last-Modified: Sat, 28 Jun 2003 10:16:26 GMT
5 ETag: "7c156d-8-3efd6afa"
6 Accept-Ranges: bytes
7 Content-Length: 8
8 Keep-Alive: timeout=15, max=100
9 Connection: Keep-Alive
10 Content-Type: text/html
200 OK

craverdy@Kyoto:~/fur>

Mon problème est que je vois bien le résultat attendu mais, que ce soit
depuis mon programme en C ou depuis le shell, la seule chose obtenue est du
vide.

Est-ce du au fait que wget est selon la page de manuel une commande "no
interactive" ?

Comment puis-je aboutir au résultat que j'attends ?

Par avance, merci.

--
Avertissement : certains passages de ce texte sont susceptibles de heurter
la sensibilité de nos lecteurs les plus romantiques.

3 réponses

Avatar
ts
"c" == christophe Raverdy writes:






c> - je sais gérer popen depuis ce programme (je l'ai fait par exemple pour des
c> requêtes whois)

c> :~/fur> wget --spider -S http://usenet-fr.net

Je n'ai pas compris, avez vous essayé ?

fd = popen("wget --spider -S http://usenet-fr.net 2>&1", "r");


--

Guy Decoux





Avatar
Bastien Durel
christophe Raverdy wrote:
Bonjour

Je suis en train de finir un programme en C qui doit notamment lire des
fichiers qui contiennent des urls et indiquer le statut de ces url (200,
404,...)

Pour résumer :
- je sais gérer popen depuis ce programme (je l'ai fait par exemple pour des
requêtes whois)
- depuis le shell (bash) je sais rediriger (temporairement) la sortie
standard vers un fichier (man wget par exemple).

Comment puis-je aboutir au résultat que j'attends ?

Par avance, merci.

Quitte à faire du C, pourquoi ne pas ouvrir la socket, envoyer la requête

(HEAD), et lire tout bêtement la réponse ?

--
Bastien Durel.

Avatar
christophe Raverdy
ts a écrit:


c> :~/fur> wget --spider -S http://usenet-fr.net
Je n'ai pas compris, avez vous essayé ?
fd = popen("wget --spider -S http://usenet-fr.net 2>&1", "r");


Globalement c'est ce que j'avais essayé, sauf le " 2>&1" et effectivement,
cela marche maintenant (le résultat est ventilé sur 7 lignes).

Merci.

--
Avertissement : certains passages de ce texte sont susceptibles de heurter
la sensibilité de nos lecteurs les plus romantiques.