IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++Builder Discussion :

copier le contenu d'une page web dans un fichier texte [Non suivi]


Sujet :

C++Builder

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2003
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 31
    Points : 11
    Points
    11
    Par défaut copier le contenu d'une page web dans un fichier texte
    Bonjour;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    NMHTTP1->InputFileMode = true;
    NMHTTP1->OutputFileMode = true;
     
     NMHTTP1->Get("http://www.wpusa.dynip.com/files/SPACE/NOAA.TXT") ;
     
     Memo2->Text = NMHTTP1->Body;
     Memo2->Lines->SaveToFile("c:\\WINDOWS\\Bureau\\Noaa.txt");
     delete MyStreamt;
    Je voudrais copier le contenu de la page web telechargée(http://www.wpusa.dynip.com/files/SPACE/NOAA.TXT), dans un fichier texte (c:\\WINDOWS\\Bureau\\Noaa.txt)
    seulement voila ce qui se copie dans le fichier texte:


    <HTML>
    <HEAD>
    <TITLE>403.1 Forbidden - No User Agent and No Referrer</TITLE>
    </HEAD>
    <BODY>
    <H1 ALIGN=CENTER>403.1 Forbidden - No User Agent and No Referrer</H1>
    <P>This site does not answer requests from browsers that do not set
    the HTTP_USER_AGENT variable (ie: the browser ID string) and arrive
    with a blank referer string.</P>
    <P>Please try your request again using a properly configured
    browser or slightly less restrictive security settings.</P>
    <P>At the very minimum, set or unblock your browser ID, please.
    We apologize for any inconvience.</P>
    <P>-- Webmaster - wpusa.dynip.com</P>
    </BODY>
    </HTML>
    si je met
    NMHTTP1->InputFileMode = true;
    NMHTTP1->OutputFileMode = true;

    le fichier texte recoit
    Default.htm
    Merci de m'indiquer ce qui se passe.

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2002
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2002
    Messages : 23
    Points : 26
    Points
    26
    Par défaut
    Je n'apporte pas de solution à ton code, en revanche, j'ai trouvé une réponse sur le code d'erreur HTTP 403.1 (cf. l'URL) avec une proposition de résolution.
    http://www.xav.com/scripts/installer/3056.html

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2003
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 31
    Points : 11
    Points
    11
    Par défaut
    Merci pour ta contribution mais je ne pense pas que ça a un rapport avec ce qui s'affiche dans le fichier texte! En plus je dois avouer que je ne suis pas trés calée en anglais
    ici on parle de http 403.1 Forbidden:
    Server returns "HTTP 403.1 Forbidden: Execute Access Forbidden"

    During the CGI install, the web server may return the error code:

    HTTP 403.1 Forbidden: Execute Access Forbidden

    This means:

    You are running Microsoft IIS on a Windows machine.

    The web server interpreted the request as an Executable request. If the request was to a *.pl file, then this is good - it probably means that the Perl-to-*.pl mapping has been set up properly.

    The folder in which you are requesting does not have "Execute" access turned on.

    How to fix the problem

    If you have access to the Windows server, go to the Internet Services Manager, select your site, select "Properties", go to the "Home Directory" tab, and check "[x] Execute" (Windows NT 4). On Windows 2000 or XP, its a little different, you need to select "Execute Permissions: [Scripts and Executables]" from the dropdown. You do not need to reboot the computer after making the change, though on older systems it may be necessary to restart the web service.

    If you do not have access to the NT server, then you must contact someone who does.
    ps: moi je travaille sous windows 98!

  4. #4
    Membre à l'essai
    Inscrit en
    Avril 2003
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 31
    Points : 11
    Points
    11
    Par défaut
    Je reformule ma question
    Est ce que la propriété Body du composant NMHTTP, reçoit le contenu de la page web!? parcequ'il y a aussi la propriété HEAD, mais je pense qu'elle reçoit l'entête de la page web!

    Je ne pense pas que ça soit dû à un pb de connexion
    Alors qu'est ce qui cloche :

    Merci pour votre contribution

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    573
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 573
    Points : 713
    Points
    713
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    TNMHTTP * NMHTTP1 = new TNMHTTP(NULL);
    TStringList *Lignes = new TStringList();
    try {   NMHTTP1->Get(Edit5->Text);   }
    catch(...)
    {  ShowMessage("erreur"); }
     
    Lignes->Text = NMHTTP1->Body ;
    Memo2->Clear();
    Memo2->Lines->AddStrings(Lignes);
     
    AnsiString tmp;
        tmp.sprintf("%s%s",ExtractFilePath(Application->ExeName).c_str(),"essai.htm");
        Memo2->Lines->SaveToFile(tmp);

  6. #6
    Membre à l'essai
    Inscrit en
    Avril 2003
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 31
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par cedni
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    TNMHTTP * NMHTTP1 = new TNMHTTP(NULL);
    TStringList *Lignes = new TStringList();
    try {   NMHTTP1->Get(Edit5->Text);   }
    catch(...)
    {  ShowMessage("erreur"); }
     
    Lignes->Text = NMHTTP1->Body ;
    Memo2->Clear();
    Memo2->Lines->AddStrings(Lignes);
     
    AnsiString tmp;
        tmp.sprintf("%s%s",ExtractFilePath(Application->ExeName).c_str(),"essai.htm");
        Memo2->Lines->SaveToFile(tmp);
    bein non ca ne marche pas non plus! si j'exécute, y'a une erreur de compilation
    [C++Erreur] MainForm.cpp(223): 'sprintf' is not a member of 'System::AnsiString'.
    Et quand je remedie à ça! le résultat est le même: Mon fichier texte reçoit
    <HTML>
    <HEAD>
    <TITLE>403.1 Forbidden - No User Agent and No Referrer</TITLE>
    </HEAD>
    <BODY>
    <H1 ALIGN=CENTER>403.1 Forbidden - No User Agent and No Referrer</H1>
    <P>This site does not answer requests from browsers that do not set
    the HTTP_USER_AGENT variable (ie: the browser ID string) and arrive
    with a blank referer string.</P>
    <P>Please try your request again using a properly configured
    browser or slightly less restrictive security settings.</P>
    <P>At the very minimum, set or unblock your browser ID, please.
    We apologize for any inconvience.</P>
    <P>-- Webmaster - wpusa.dynip.com</P>
    </BODY>
    </HTML>
    au lieu de recevoir le contenu de la page web!!!


    Existe t' il une solution svp :

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    573
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 573
    Points : 713
    Points
    713
    Par défaut
    #include <vcl.h>
    #include <mshtml.h>
    #include <NMHttp.hpp>
    #include <Vcl\strutils.hpp>


    essayes avec certains ou tous pour voir

    donnes le lien de la page que tu veux recup

  8. #8
    Membre à l'essai
    Inscrit en
    Avril 2003
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 31
    Points : 11
    Points
    11
    Par défaut
    ca marche pas non plus

    en fait je ne vois pas l'utilité d'utilité : temp.sprintf!!!

    Il doit y avoir un code beaucoup plus simple pour réaliser ce que je veux faire!
    Merci quand même pour ton aide

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    573
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 573
    Points : 713
    Points
    713
    Par défaut
    ah oui c vrai les deux lignes concernant tmp

    tu peux oublier , ca vient d un projet où je m en sers

  10. #10
    Membre à l'essai
    Inscrit en
    Avril 2003
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 31
    Points : 11
    Points
    11
    Par défaut
    Ah d'accord!!

    Bein de toute façon j'ai réessayé, et toujours la même chose!! pourtant la page web existe et la connexion est trés bonne!
    cedni! avce ce code, ton composant memo2 reçoit le contenu de la page web?

    Je vous remontre le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    NMHTTP * NMHTTP1 = new TNMHTTP(NULL);
    TStringList *Lignes = new TStringList();
    try {   NMHTTP1->Get("http://www.wpusa.dynip.com/files/SPACE/NOAA.TXT");   }
     
    catch(...)
    {  ShowMessage("erreur"); }
     
    Lignes->Text = NMHTTP1->Body ;
    Memo2->Clear();
    Memo2->Lines->AddStrings(Lignes);
    et voici ce que j'ai dans Memo2:
    <HTML>
    <HEAD>
    <TITLE>403.1 Forbidden - No User Agent and No Referrer</TITLE>
    </HEAD>
    <BODY>
    <H1 ALIGN=CENTER>403.1 Forbidden - No User Agent and No Referrer</H1>
    <P>This site does not answer requests from browsers that do not set
    the HTTP_USER_AGENT variable (ie: the browser ID string) and arrive
    with a blank referer string.</P>
    <P>Please try your request again using a properly configured
    browser or slightly less restrictive security settings.</P>
    <P>At the very minimum, set or unblock your browser ID, please.
    We apologize for any inconvience.</P>
    <P>-- Webmaster - wpusa.dynip.com</P>
    </BODY>
    </HTML>

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    573
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 573
    Points : 713
    Points
    713
    Par défaut
    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
    <HTML>
      <HEAD>
        <META HTTP-EQUIV="Pragma" CONTENT="no-cache">
        <TITLE>Offline!</TITLE>
      </HEAD>
     
      <BODY BGCOLOR="#FFFFFF">
        <P ALIGN="center"><img src="concept3-IR.gif" border="0"></p>    
        <H1 ALIGN="CENTER"><FONT FACE="Arial">Not Available!</FONT></H1>
     
        <P ALIGN="CENTER"><FONT FACE="Arial" SIZE="+1">The DynIP customer
          at <b>www.wpusa.dynip.com</b> is<BR>
           not connected to the Internet right now.</FONT></P>
     
        <H2 ALIGN="CENTER"><FONT FACE="Arial">Please try again later. </FONT></H2>
     
        <P><BR>
          </P>
     
        <H3 ALIGN="CENTER"><FONT FACE="Arial">What is DynIP? </FONT></H3>
     
        <BLOCKQUOTE>
          <BLOCKQUOTE><FONT FACE="Arial"><B>DynIP</B> gives your computer an
            Internet Name that automatically tracks your current IP Address every
            time you connect to the Internet. If you want to run a server from your
            desktop you can give your Internet Name to your customers and they can
            find your server without ever knowing your current IP Address again!
            DynIP's Internet Name technology works great with multi-player internet
            games, video conferencing (i.e. NetMeeting), voice conferencing (i.e. IP
            Phone) and remote access (i.e. PC Anywhere). You can use your Internet
            Name with all Internet applications where your current IP Address is
            required. </FONT></BLOCKQUOTE></BLOCKQUOTE>
     
        <P ALIGN="CENTER"><FONT FACE="Arial">Get YOUR OWN 
          <A HREF="http://www.dynip.com">Internet Name HERE!</A></FONT></P>
     
        <P ALIGN="CENTER"><FONT FACE="Arial">Free 30 day trial!</FONT></P>
    <div align="center"><a href="http://www.dynip.com/"><img src="/poweredbydynip.gif" border="0" alt="Powered By DynIP!"></a></div>
      </BODY>
    </HTML>
    voilà ce que j obtiens

  12. #12
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    573
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 573
    Points : 713
    Points
    713
    Par défaut
    parcontre

    essayes de creer un nouveau projet , des fois ca fonctionne , vas t en savoir pourquoi ?

  13. #13
    Membre à l'essai
    Inscrit en
    Avril 2003
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 31
    Points : 11
    Points
    11
    Par défaut
    et bien tu obtiens à peu prés la même chose que moi! mais c'est pas ce que je veux
    en fait la page web elle même est au format txt! je ne veux pas afficher l'entete et les autres info concernant la page web!
    Je veux juste copier son contenu dans un composant Memo
    Aidez moi s'il vous plait

  14. #14
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 163
    Points : 1 148
    Points
    1 148
    Par défaut
    Je crois que fverneau avait bien raison.
    Tu affiches bien ce que le serveur te retourne : une page web, même si c'est une page d'erreur.
    Sauf qu'évidement tu récupères le code de la page source (normal).

    Pourquoi tu récupère une page d'erreur ? Eh bien c'est écrit dans la page d'erreur
    <H1 ALIGN=CENTER>403.1 Forbidden - No User Agent and No Referrer</H1>
    <P>This site does not answer requests from browsers that do not set
    the HTTP_USER_AGENT variable (ie: the browser ID string) and arrive
    with a blank referer string.</P>
    <P>Please try your request again using a properly configured
    browser or slightly less restrictive security settings.</P>
    Le serveur demande qu'un certain entête de la requête HTTP soit présent, celui qui permet d'identifier le navigateur utilisé. Alors soit le composant que tu utilises te permet de faire cela, soit il faut que tu fasses tout à la main.
    J'ai un exemple pour le faire à la main, mais chez moi donc je pourrais te le poster sur le forum ce soir si ça t'intéresse.
    Neilos

  15. #15
    Membre à l'essai
    Inscrit en
    Avril 2003
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 31
    Points : 11
    Points
    11
    Par défaut
    ah oui je suis trés intéréssée!!!! merci de te donner la peine! si ça marche tu me sauveras la vie

  16. #16
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 163
    Points : 1 148
    Points
    1 148
    Par défaut
    Ok..j'ai pas eu le temps hier soir je me suis fait embarqué pour un ciné mais ce soir je te le poste.
    Désolé pour le retard.
    Neilos

  17. #17
    Membre à l'essai
    Inscrit en
    Avril 2003
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 31
    Points : 11
    Points
    11
    Par défaut
    Pas de problème Neilos! j'éspère au moins que t'as vu un film qui en vaut la peine
    Et puis j'éspère que ça va marcher!!! mais je pense qu'il y a un moyen plus simple peut etre l'utilisation de autre composant

  18. #18
    Membre à l'essai
    Inscrit en
    Avril 2003
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 31
    Points : 11
    Points
    11
    Par défaut
    Neilos! tu m'as oublié

  19. #19
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 163
    Points : 1 148
    Points
    1 148
    Par défaut
    Euh...ouais
    Ce soir promis !
    Je m'envoie un mail pour ne pas oublier.

    Je suis vraiment désolé !
    Neilos

  20. #20
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 163
    Points : 1 148
    Points
    1 148
    Par défaut
    Alors voici comme je procède.
    Je place un composant TClientSocket sur ma fiche principale que tu configures correctement (Host et Port).

    Ensuite je construit la requête HTTP à la main, bon la mienne cté pour passer des paramètres à une page via la méthode POST. Si tu fais une recherche sur le Header HTTP tu trouvera peut être quelque chose de plus adapté. De toute façon il faudra que tu fasses une recherche pour connaitre le truc à rajouter dans l'entête pour te faire passer pour un navigateur...parce que là je connais pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    AnsiString request = "POST /ma_page.htm HTTP/1.1\r\n";
    request = request + "Host: www.mon-site.com";
    result = result + "\r\nConnection: Close\r\n";
    result = result + "Content-type: application/x-www-form-urlencoded\r\n";
     
    ClientSocket->Host = "www.mon-site.com";
    ClientSocket->Port = 80;
    ClientSocket->Active
    Ensuite dans le OnReceive tu peux récupérer tout ce qui t'es retourné par le serveur : à savoir une page html

    Voilà j'espère que tu vas t'en sortir...cette histoire m'intéresse et je vais chercher un peu si je trouve quelque chose !
    Neilos

Discussions similaires

  1. Afficher le contenu d'une page Web dans une balise div
    Par rolls dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 05/11/2012, 08h30
  2. copier le contenu d'une page web
    Par ludojojo dans le forum VBScript
    Réponses: 11
    Dernier message: 11/08/2009, 17h30
  3. copier plusieurs pages web dans un fichier texte
    Par rjoffre dans le forum Langage
    Réponses: 2
    Dernier message: 16/09/2007, 11h45
  4. Réponses: 4
    Dernier message: 29/06/2006, 10h09
  5. Réponses: 2
    Dernier message: 16/07/2004, 09h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo