salut tout le monde,
existe-il des api c sous linux permettant la manipulation du protocole http?
merci d'avance .
salut tout le monde,
existe-il des api c sous linux permettant la manipulation du protocole http?
merci d'avance .
tu peux nous en dire un peu plus ???
as tu jeté un oeil sur curl ??
Rien ne se perd, rien ne se crée, tout se transforme
------- -------
voilà ce que je veux faire:
me connecter a un serveur http pour recupérer des fichier xml en lui envoyant des url.
NB:
je programme avec du C;
j'en connais pas trop en HTTP c'est pour ça que je cherche des api me permettant l'utilisation de ses fonctionnalitées (connexion au serveur, envoi de la requête et recupèration des fichiers) sans avoir implementer le protocole.
Envoyé par sofiane80
pour ça, il te faut des sockets. la connexion au serveur, l'envoie et la récéption se font sur ces sockets, et concernat le HTTP, il suffit d'ouvrir sur le port 80.voilà ce que je veux faire:
me connecter a un serveur http pour recupérer des fichier xml en lui envoyant des url.
NB:
je programme avec du C;
j'en connais pas trop en HTTP c'est pour ça que je cherche des api me permettant l'utilisation de ses fonctionnalitées (connexion au serveur, envoi de la requête et recupèration des fichiers) sans avoir implementer le protocole.
06/05/2008 09h24
tutoriel pour commencer
ok ça marche très bien.
voici une traduction de ce que vous aviez dit en C:
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72 int init_sock_client(char *remote_ip, u_short remote_port){ int sockfd; struct sockaddr_in serv_addr; struct hostent *server; u_long addre; sockfd = socket(AF_INET, SOCK_STREAM, 0); if (sockfd < 0){ error("ERROR opening socket",0); return 0; } addre=inet_addr(remote_ip); server = gethostbyaddr((char *)&addre,sizeof(addre),AF_INET); if (server == NULL) { error("ERROR, no such host\n",0); return 0 ; } bzero((char *) &serv_addr, sizeof(serv_addr)); serv_addr.sin_family = AF_INET; bcopy((char *)server->h_addr, (char *)&serv_addr.sin_addr.s_addr,server->h_length); serv_addr.sin_port = htons(remote_port); if (connect(sockfd,(struct sockaddr*)&serv_addr,sizeof(serv_addr)) < 0){ error("ERROR connecting",0); return 0; } return sockfd ; } int main (int argc ,char** argv){ int sockfd, n; char buffer[255]; size_t len=0; char *answer; FILE *f; sockfd=init_sock_client("l'addresse IP du serveur", port_du_serveur); bzero(buffer,255); sprintf(buffer,"%s","GET url\n"); write(sockfd,buffer,strlen(buffer)); bzero(buffer,255); while ((n=read(sockfd,buffer,1024))!=0){ answer=realloc(answer,n+len); memcpy(answer+len,buffer,n); len+=n; bzero(buffer,1024); } colse(sockfd); f=fopen("filename.xml","wb"); fwrite (answer, 1,len, f); fclose(f); free(answer); return EXIT_SUCCESS; }
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager