Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
504 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Requetes HTML

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Requetes HTML

n°1306788
Cuty74
Posté le 16-02-2006 à 02:17:29  profilanswer
 

Bonjour à tous,  
 
je fais un programme en C  qui gere la mise à jour d'une adresse dns en fonction d'un ping et là je bloque pour envoyer une requete HTML sans ouvrir de fenetre ieplorer ou mozilla.
 
J'ai cette info là a envoyer

Code :
  1. "http://"NomUser":"Pass"@members.dyndns.org/nic/update?system=dyndns&hostname="Adresse dyndns"&myip="IP"&wildcard=OFF&mx=&backmx=NO&offline=NO"


 
 
Si kkun a la solution je lui en serait trés reconnaissant ;)

mood
Publicité
Posté le 16-02-2006 à 02:17:29  profilanswer
 

n°1306816
franceso
Posté le 16-02-2006 à 09:13:53  profilanswer
 

Il s'agit plutôt d'une requête HTTP (pas grand chose à voir avec HTML)
 
Le principe général est:
 

  • 1. ouvrir une socket vers le serveur qui t'intéresse (members.dyndns.org, port 80). Il existe des tonnes de docs sur le sujet.

Par exemple : (ce code provient du poly de cours de programmation système de l'ENSTA)

Code :
  1. int socket_client ( char *serveur , unsigned short port )
  2. {
  3.    int                  client_socket ;
  4.    struct hostent       *hostent ;
  5.    struct sockaddr_in   serveur_sockaddr_in ;
  6.    client_socket = socket ( PF_INET , SOCK_STREAM , 0 ) ;
  7.    if ( client_socket == -1 )
  8.    {
  9.       perror ( "socket" ) ;
  10.       exit ( EXIT_FAILURE ) ;
  11.    }
  12.    if ( inet_addr ( serveur ) == INADDR_NONE )   /* nom */
  13.    {
  14.       hostent = gethostbyname ( serveur ) ;
  15.       if ( hostent == NULL )
  16.       {
  17.          perror ( "gethostbyname" ) ;
  18.          exit ( EXIT_FAILURE ) ;
  19.       }
  20.    }
  21.    else   /* adresse IP */
  22.    {
  23.       unsigned long addr = inet_addr ( serveur ) ;
  24.       hostent = gethostbyaddr ( ( char * ) &addr , sizeof ( addr ) ,
  25.                                 AF_INET ) ;
  26.       if ( hostent == NULL )
  27.       {
  28.          perror ( "gethostbyaddr" ) ;
  29.          exit ( EXIT_FAILURE ) ;
  30.       }
  31.    }
  32.    memset ( &serveur_sockaddr_in , 0 , sizeof ( serveur_sockaddr_in ) ) ;
  33.    serveur_sockaddr_in.sin_family      = AF_INET ;
  34.    serveur_sockaddr_in.sin_port        = htons ( port ) ;
  35.    memcpy ( &serveur_sockaddr_in.sin_addr.s_addr , hostent->h_addr_list[0] ,
  36.             hostent->h_length) ;
  37.    printf ( ">>> Connexion vers le port %d de %s [%s]\n" ,
  38.             port , hostent->h_name ,
  39.             inet_ntoa ( serveur_sockaddr_in.sin_addr ) ) ;
  40.    if ( connect ( client_socket , ( struct sockaddr * ) &serveur_sockaddr_in ,
  41.                                   sizeof ( serveur_sockaddr_in ) ) == -1 )
  42.    {
  43.       perror ( "connect" ) ;
  44.       exit ( EXIT_FAILURE ) ;
  45.    }
  46.    return client_socket ;
  47. }


 
<edit> j'ai oublié de préciser que tout ceci est spécifique pour Linux (ou plutôt POSIX). Il faut bien sûr que tu adaptes en utilisant les fonctions spécifiques de ton OS </edit>
 

  • 2. visiblement, tu as une authentification à gérer, et ça, je ne sais pas du tout comment ça marche


  • 3. tu envoies la requête http dans la socket de connexion :
Code :
  1. int c_socket = client_socket( "members.dyndns.org", 80 );
  2. fprintf( c_socket, "GET /nic/update?system=dyndns&hostname=%s&myip=%s&wildcard=OFF&mx=&backmx=NO&offline=NO HTTP/1.0\n\n", adresse_dyn_dns, ip );


Message édité par franceso le 16-02-2006 à 10:31:10
n°1306931
Cuty74
Posté le 16-02-2006 à 11:32:44  profilanswer
 

J'ai fouiner un peu sur le net pour trouver des info et j'ai trouver quelques chose que je n'arrive pas trop a exploiter, je vous met les infos et si quelqu'un peu m'éclairer à ce sujet sa serai super ;)


Représente le contenu, non analysé, du message de requête HTTP.
 
__property AnsiString Content = {read=GetStringVariable, index=25};
 
Description
 
Utilisez la propriété Content pour accéder au contenu d'un message de requête HTTP qui envoie des informations au serveur. La valeur de la propriété Content dépend de celle de Method pour la requête HTTP. Si Method a la valeur POST, Content  contient la chaîne non analysée spécifiant les valeurs à expédier avec leurs champs associés. Si Method a la valeur PUT, Content spécifie la valeur qui doit remplacer l'URL spécifiée par la propriété URL.


 
 
Merci


Message édité par Cuty74 le 16-02-2006 à 11:33:47
n°1306961
francky06l
Posté le 16-02-2006 à 11:51:55  profilanswer
 

A mons avis c'est du .NET, mais je pense que ca va avoir du mal a rentrer dans ton programme C facilement.
Pour les requete Http, une lib facile a utiliser c'est libcurl. Ca tourne sous windows / unix /linux.
Enfin je me repete mais si tu veux pas trop te compliquer la vie avec les sockets etc ...

n°1306966
Cuty74
Posté le 16-02-2006 à 11:55:19  profilanswer
 

Ouép jvais me rediriger vers les sockets, jvais étudier un peu le sujet et jvais voir si j'arrive a expliter ce que ma dis franceso.
 
En tout cas je vous remercie pour votre aide ;)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Requetes HTML

 

Sujets relatifs
lister tous les id déclarer dans une page html en js[HTML/CSS]Problème de positionment avec IE, trou de 1px
HTML - agrandir animation wmv dans une popup[css html] Selection texte et roulette > problèmes sous IE
[Css Html] Problème avec les marges internes "padding[HTML]Probleme avec mon site
Intégrer du HTML dans du flash ???Module news HTML
Requetes sur un site externe et traitement des données[HTML/CSS]Problème pour faire des contours
Plus de sujets relatifs à : Requetes HTML


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR