Bonjour,
Je ne savais pas trop où poser cette question, j'espère avoir trouvé le bon endroit.
J'essaie de récupérer des pages webs de la RATP pour un widget. Le widget en question existe déjà mais je dois le recoder. Problème à chacune de mes requêtes GET je reçois bien une page web mais cette dernière me dit que le service est indisponible, ce qui est faux. Si je mets l'adresse dans le navigateur pas de problème, si j'utilise wget pas de problème non plus
code source pour le socket (en C)
Page récupérée (seulement le début)
Code C : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59 #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <netdb.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <stdio.h> #define DATA "GET http://www.ratp.info/horaires/?etape=choix_rer_ssotr&act=act_valid&ligne=A HTTP/1.0\n\n" int main (int argc, char * argv[]) { int sock; struct sockaddr_in name; struct hostent *machine, *gethostbyname(); int length; sock = socket (AF_INET, SOCK_STREAM, 0); if (sock < 0) { perror ("socket"); return 1; } name.sin_family = AF_INET; name.sin_port = htons(80); name.sin_addr.s_addr = inet_addr ("62.160.111.11"); if (connect(sock,(struct sockaddr *)&name, sizeof(name)) < 0) { perror ("connect"); close (sock); return 1; } if (send (sock, DATA, sizeof(DATA),0) < 0) { perror ("send"); close (sock); return 1; } int nb_char_lus; char message_recu[100]; FILE *sortie; sortie = fopen ("test4444.txt", "w"); while ( (nb_char_lus=recv (sock, message_recu, 99, 0)) > 0) { message_recu[nb_char_lus]='\0'; printf ("%s", message_recu); fwrite (message_recu, sizeof(char),100,sortie); } fclose (sortie); close (sock); return 0; }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54 HTTP/1.1 200 OK^M Date: Mon, 20 Aug 2007 11:28:44 GMT^M Server: Apache^M Set-Cookie: PHPSESSID=e188a00^@98a35d241183fac372ee6de6e; path=/^M Expires: Thu, 19 Nov 1981 08:52:00 GMT^M Cache-Control: private^M ^@Pragma: no-cache^M Vary: Accept-Encoding,User-Agent^M P3P: CP="NON IND"^M Connection: close^M Content-T^@ype: text/html^M ^M <html>^M <head>^M <title>Horaires RER</title>^M <link rel="stylesheet" type="text/cs^@s" href="/francilien.css">^M ^M <script language="javascript"> var MsgErrArr = 'Veuillez choisir un a^@rrêt.'; var MsgErrDir = 'Veuillez choisir une direction.'; </script> ^M <script language="JavaScript^@" src="/horaires/js/general.js"></script>^M <script language="JavaScript" src="/horaires/js/prec_lig^@ne.js"></script>^M ^M </head>^M <body bgcolor="#FFFFFF" onLoad="MM_preloadImages('/picts/v_bt/b_rec_on^@.gif');defiler('MsgIndipo','LE SYSTEME SIEL EST MOMENTANEMENT INDISPONIBLE. VOUS POUVEZ CONSULTER L^@ES HORAIRES DE REFERENCE A LA RUBRIQUE "Tous les horaires de la ligne"',200);" topmargin=^@"0" leftmargin="0" marginwidth="0" marginheight="0">^M ^M <table border="0" cellpadding="0" cell^@spacing="0" width="764"^M height="139">^M <tr height="139"> ^M <td width="764" height="139^@" valign="top"> ^M <!-- Gouttière - Begin --> <div style="padding: 5px 0; font-size: 0;"></di^@v> <!-- Gouttière - End --> <!-- Mega Banner - Begin --> <div id="mega_banner_box"> <div class="c^@ontent"> </div> </div> <!-- Mega Banner - End --> <!-- Haut de page - B^@ner_box"> <div class="c^@egin --> <div id="haut_page"> <div class="haut_page_visual"> <ul> <li class="last">^@<a href="http://www.ratp.fr/contact/">Contactez-nous</a></li>
Je ne sais pas trop où peut être le problème
Certains me conseilleront peut être \r\n après le HTTP/1.0 j'ai testé aussi et ça bloque
Merci
Partager