https-Seiten einlesen - wie? HILFE!
-
Bin ziemlich verzweifelt, weil ich kein C++ - Spezialist bin und auch nur VC6 habe, aber statt wie bisher mit InternetOpenUrl und InternetReadFile eine http-Seite muß ich jetzt leider zwingend eine https - Seite einlesen.
Geht das überhaupt mit C++ in VC6 und wenn ja wie ?
Wäre supernett, wenn jemand, der das schon mal gemacht hat einen Tipp geben könnte.
-
Afaik kann man dafür die Bibliothek "libcurl" nehmen (einfach mal nehmen, ist recht bekannt).
edit: "einfach mal nehmen" -> "einfach mal googeln"
-
InternetOpenUrl mit INTERNET_FLAG_SECURE Flag.
-
INTERNET_FLAG_SECURE allein funktioniert bei mir nicht.
Versuche gerade das https.c - Beispiel mit curllib. Habe aber wohl noch Probleme beim linken der Library.
https.obj : error LNK2001: Nichtaufgeloestes externes Symbol __imp__curl_easy_cleanup
https.obj : error LNK2001: Nichtaufgeloestes externes Symbol __imp__curl_easy_perform
https.obj : error LNK2001: Nichtaufgeloestes externes Symbol __imp__curl_easy_setopt
https.obj : error LNK2001: Nichtaufgeloestes externes Symbol __imp__curl_easy_init
Release/https.exe : fatal error LNK1120: 4 unaufgeloeste externe Verweise
-
hast du auch daran gedacht bei InternetConnect als Port 443 bzw. INTERNET_DEFAULT_HTTPS_PORT anzugeben?
-
Mein Programm verwende leider kein InternetConnect sondern
InternetOpen()
InternetOpenUrl()
HttpQueryInfo() und
InternetReadFile() .Wo / wie muß / kann ich da INTERNET_DEFAULT_HTTPS_PORT angeben?
-
Habe mein altes Programm von InternetOpenUrl() jetzt zur Verwendung mit
InternetConnect, HttpOpenRequest, HttpSendRequest und HttpQueryInfo umgeschrieben.Mit http klappt das auch, aber wenn ich in InternetConnect INTERNET_DEFAULT_HTTPS_PORT verwende und in HttpOpenRequest INTERNET_FLAG_SECURE als Flag setze reicht das offenbar nicht, denn HttpQueryInfo liefert immer nur 0 zurück.
Vieleicht muß man noch irgendwo mit INTERNET_FLAG_IGNORE_CERT_CN_INVALID oder INTERNET_FLAG_IGNORE_CERT_DATE_INVALID herunexperimentieren (oder etwas Besonderes beim Aufsplitten der URL nach Server und Seite beachten) ? ?
-
user4711 schrieb:
Vieleicht muß man
mal Rückgabewerte auswerten.
-
Hab's jetzt doch mit InternetConnect und HttpOpenRequest hinbekommen.
Lag wohl an den Flags:
#define IGNORE_CERT SECURITY_FLAG_IGNORE_UNKNOWN_CA | SECURITY_FLAG_IGNORE_CERT_CN_INVALID | SECURITY_FLAG_IGNORE_CERT_DATE_INVALID
half mir.
-
Erstmal die richtigen Versionen von Openssl compilieren und einbinden. Ich kann dir jetzt nur den Präprozessoer define für das statische linken gegen die libcurl.lib nennen, weil ich diese lib bisher nur statisch gelinke habe.
Auf jeden Fall musst du dann CURL_STATICLIB im Präprozessor definieren und schon kannst du die Funktionen auch benutzen. Zur libcurl.lib gehören dann auch noch folgende Headerfiles:curl.h curlrules.h curlver.h easy.h multi.hMöglicherweise brauchst du nicht alle. Die mitgelieferten *.dsw Dateien konnte ich im VS2005 einwandfrei importieren. Achso wenn du die libcurl.lib compilierst muss du USE_SSLEAY und CURL_STATICLIB und im Präprozesor definieren, damit openssl eingebunden wird und du statisch linken kannst. Also ich hab da am Anfang auch schon rumbasteln müssen, aber das Ganze funktioniert einwandfrei.