URL (https) unsichtbar aufrufen mit Indy idHTTP



  • Hallo,

    ich habe nun den ganzen Morgen im I-Net gesucht, sowohl nach meinem Problem als auch nach einer Doku von Indy HTTP, habe aber leider nichts brauchbares gefunden. Auch hier im Forum bisher nicht, daher traue ich mich mal zu fragen.

    Ich möchte eine URL aufrufen, aber ohne dass die Seite angezeigt wird, somit scheidet shellexecute aus, denn damit öffne ich auch den Browser.
    Vielleicht wird das Problem deutlicher, wenn ich erkläre, was ich damit bezwecke:

    Ich lade zuerst den Quelltext einer Seite in einen AnsiString

    void ueberpruefung_starten (void)
    {
       AnsiString htmlstring;
    
       htmlstring = F_Main->IC_HTTP->Get("http://www.internetseite.de");
    

    Als Hinweis: Ich rufe vorher kein F_Main->IC_HTTP->Connect() auf. Anscheinend ist das nicht nötig, wenn man ständig mit dem Internet verbunden ist. Auf jeden Fall funktioniert es auch ohne vorheriges Connect(). Eine testweise Abfrage bool connect = F_Main->IC_HTTP->Connected() liefert auf jeden Fall TRUE zurück.
    (Sorry, z.Z. ist das bei mir mehr "probieren bis es klappt" als wissentliches programmieren, doch ich finde nirgends eine Doku zu idHTTP und die von Marquardt ist für HTTP auch nicht allzu aussagefähig).

    Aus dem Quellcode dieser Internetseite suche ich mir ein paar Infos raus und verschicke diese per SMS. Für den SMS-Versand bedarf es einer URL mit allen dazugehörigen Infos. Diesen String speichere ich ebenfalls in einen AnsiSring in dieser Form:

    AnsiString sms;
    
    sms = "https://gateway.domain.de/index.php?key=KEY&service=sms&originator=00491771234567&receiver00491779876543&message=MEIN_SMS_TEXT"
    

    Und jetzt stehe ich vor der Preisfage, wie rufe ich diese URL auf?

    Ich habe es versucht mit

    AnsiString smsstatus;
    
    smsstatus = F_Main->IC_HTTP->Get(sms);
    

    Gedanke: Wenn er den Quelltext ausliest, muss er die Seite ja zuerst mal laden.
    Klappt aber nicht, wahrscheinlich weil es https ist, denn alle anderen https-Seiten, die ich getestet habe, funktionieren auch nicht,wobei http-Seiten immer funktionieren.

    Hat vielleicht einer eine Idee?

    Vielen vielen lieben Dank vorab.



  • Ergänzung:

    Also falls noch jemand antworten möchte, kann er das gerne tun, die Lösung für https wäre sicherlich interessant.

    Das Problem selber hat sich allerdings von selber erledigt, da der Anbieter mir eben mitgetielt hat, dass das Gateway ebenfalls ber http erreichbar ist und damit klappt

    smsstatus = F_Main->IC_HTTP->Get(sms);
    

    wunderbar 😃



  • Hi,

    naja, wenn du HTTPS nutzen willst, dann benötigst du SSL.
    Dazu kannst du den SSLIOHandler von Indy in Kombination mit (wenn es umsonst sein soll) OpenSSL verwenden.
    Es ist schon lange her das ich das mal gemacht habe und ich entsinne mich, dass es mit OpenSSL an einigen Stellen "schmerzhaft" war ^^

    Auf der Indy Seite gibt es ein Beispielprojekt mit einem TCP-Client und SSL.

    Schönen Gruß


Anmelden zum Antworten