Results 1 to 6 of 6

Thread: idHTTP.get(); pagina is geladen ... of niet

  1. #1
    Member Duiker's Avatar
    Join Date
    May 2020
    Location
    Hamont-Achel (Belgie), Pattaya (Thailand)
    Posts
    55

    idHTTP.get(); pagina is geladen ... of niet

    Aangezien ik in DELPHI 7 geen HTTPS pagina kan laden met idHTTP heb ik de student versie van RAD STUDIO 10.3 geinstalleerd. Het is even wennen. Nu kan ik perfect, en vooral snel de HTML code in een memo zetten. Die vervolgens gefilterd kan worden. Dat werkt allemaal. Het laden van de memo doe ik met onderstaande code:

    Delphi Code:
    1. procedure TMainForm.Button1Click(Sender: TObject);
    2. begin
    3.   Memo1.Clear;
    4.   try
    5.     Memo1.Lines.Add(idHTTP1.Get('https://www.iex.nl/Aandeel-Koers/11895/ArcelorMittal/historische-koersen.aspx?maand=0'));
    6.   except
    7.  
    8.   end;
    9.   //Als geen errors, en de pagina is geladen, dan pas door gaan.
    10.   Timer1.Interval:=100;
    11.   Timer1.Enabled:=true;
    12.   Memo2.Clear;
    13. end;


    Alleen die timer hoort daar niet. Die timer heb ik nodig omdat het laden even duurt, en DELPHI gaat gewoon verder.

    Mijn vraag is nu hoe ik kan afvangen dat een pagina geladen is. Ja, of natuurlijk niet geladen is, want dat zal ook wel eens voorkomen bij bijvoorbeeld geen Internet verbinding of zo.

  2. #2
    idHTTP1.Get() is toch 'blocking'? Die zou helemaal niet terug mogen keren voordat de pagina geladen is.

    Dus afvangen wanneer de pagina geladen is hoeft helemaal niet.

  3. #3
    Member Duiker's Avatar
    Join Date
    May 2020
    Location
    Hamont-Achel (Belgie), Pattaya (Thailand)
    Posts
    55
    OK, ik zie dat ik door alle probeersels wat vergeten was.
    Het werkt nu ook zonder de timer. Maar ook zonder Internet verbinding gaat deze door. Dus ondanks dat het memo niet geladen is, wordt de volgende instructie al gestart.

    Delphi Code:
    1. procedure TMainForm.Button1Click(Sender: TObject);
    2. begin
    3.   Memo1.Clear;
    4.   try
    5.     Memo1.Lines.Add(idHTTP1.Get('https://www.iex.nl/Aandeel-Koers/11895/ArcelorMittal/historische-koersen.aspx?maand=0'));
    6.   except
    7.     Windows.Beep(800,100);
    8.   end;
    9.   Button3.Click();
    10. end;

    Dus Button3.Click(); wordt ook geactiveerd zonder Internet verbinding. Dat zal toch wel af te vangen zijn lijkt me zo.

  4. #4
    Wat heef geeft get() terug als er geen internet verbinding is?
    Of komt ie dan in de except.

    Indien lege string kun je daar op controleren.
    Indien except dan kun je de button3.click binnen de try brengen.
    (Die wordt dan niet uitgevoerd ingeval van except in get().)

  5. #5
    Member Duiker's Avatar
    Join Date
    May 2020
    Location
    Hamont-Achel (Belgie), Pattaya (Thailand)
    Posts
    55
    Mijn compiler geeft een Socket Error #11001 Host not found. (Wifi staat uit)
    Button3.Click(); in de try zetten werkt prima zie ik.

    Dit heb ik er nu van gemaakt:
    Delphi Code:
    1. procedure TMainForm.Button1Click(Sender: TObject);
    2. begin
    3.   Memo1.Clear;
    4.   try
    5.     Memo1.Lines.Add(idHTTP1.Get('https://www.iex.nl/Aandeel-Koers/11895/ArcelorMittal/historische-koersen.aspx?maand=0'));
    6.     Button3.Click();
    7.   except
    8.     on E : Exception do
    9.      begin
    10.        ShowMessage('Pagina laden is niet gelukt.' + chr(13) +
    11.                    'Exception class name = ' + E.ClassName + chr(13) +
    12.                    'Exception message = ' + E.Message);
    13.      end;
    14.   end;
    15. end;

  6. #6
    Fornicatorus Formicidae VideoRipper's Avatar
    Join Date
    Mar 2005
    Location
    Vicus Saltus Orientalem
    Posts
    5,708
    Tenzij er een boel veranderd is in Indy (en dat is vaak zo) controleer je normaal gesproken op de responsecode, deze is 200 als het gelukt is.
    Delphi Code:
    1. procedure TfrmMain.btnGetClick(Sender: TObject);
    2. var
    3.   S: string;
    4. begin
    5.   try
    6.     S := HTTP.Get(edtURL.Text);
    7.     if HTTP.ResponseCode = 200 then
    8.       mmoResult.Text := S
    9.     else
    10.       mmoResult.Text := Format('Errorcode: %d, message: "%s"',
    11.                               [HTTP.ResponseCode, HTTP.ResponseText]);
    12.   except
    13.     on E: Exception do
    14.       mmoResult.Text := Format('Exception: "%s"',
    15.                               [E.Message]);
    16.   end;
    17. end;
    Attached Files Attached Files
    TMemoryLeak.Create(Nil);

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •