Libcurl fonctionne t'il ?????
yann458
Messages postés
455
Date d'inscription
Statut
Membre
Dernière intervention
-
[Dal] Messages postés 6205 Date d'inscription Statut Contributeur Dernière intervention -
[Dal] Messages postés 6205 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Bonjour,
Je voudrais savoir si les API libcurl fonctionne bien ?
Pas tester.
Il faut reconnaître que c'est pas simple d'encoder decoder SSL
Ca me retourne tous le temps : CURLE_COULDNT_RESOLVE_HOST !! que internet soit connecté ou pas !!
Pour ceux qui veulent extraire en programmation une page html via https SSL .... désolé !
Merci
Bonne nouvelle : Les codes sources se compile bien sans erreur seulement depuis IDE de visual studio. c'est déjà ca.
Bonjour,
Je voudrais savoir si les API libcurl fonctionne bien ?
Pas tester.
Il faut reconnaître que c'est pas simple d'encoder decoder SSL
// gethttps.cpp : This file contains the 'main' function. Program execution begins and ends there. // #include "pch.h" //#include "http_download.hh" #include <Windows.h> #include <curl/curl.h> //#include <sstream> //#include <stdexcept> //using namespace std; typedef struct { BYTE data[1 * 1024 * 1024]; DWORD pos; }TBUF,*PBUF; TBUF bb; size_t callback(void* contents, size_t size, size_t nmemb, void* user) { PBUF pb = (PBUF)user; size_t sizeIncrease = size * nmemb; memcpy(pb->data + pb->pos, contents, sizeIncrease); pb->pos += sizeIncrease; return sizeIncrease; } void download(wchar_t* url, long* responseCode) { //vector<char> data; curl_global_init(CURL_GLOBAL_ALL); CURL* handle = curl_easy_init(); curl_easy_setopt(handle, CURLOPT_URL, url); curl_easy_setopt(handle, CURLOPT_WRITEFUNCTION, callback); curl_easy_setopt(handle, CURLOPT_WRITEDATA, &bb); curl_easy_setopt(handle, CURLOPT_USERAGENT, "libcurl-agent/1.0"); CURLcode result = curl_easy_perform(handle); if (responseCode != nullptr) curl_easy_getinfo(handle, CURLINFO_RESPONSE_CODE, responseCode); curl_easy_cleanup(handle); curl_global_cleanup(); if (result != CURLE_OK) { /*stringstream err; err << "Error downloading from URL \"" << url << "\": " << curl_easy_strerror(result); throw runtime_error(err.str());*/ } //return move(data); } int main() { bb.pos = 0; long rcode = 0; download((wchar_t*)L"https://www.google.fr/?gws_rd=ssl", &rcode); if (bb.pos > 0) { HANDLE f = CreateFileW(L"test.htm", GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, NULL); if (f != INVALID_HANDLE_VALUE) { DWORD dt = 0; WriteFile(f, bb.data, bb.pos, &dt, NULL); CloseHandle(f); } } }
Ca me retourne tous le temps : CURLE_COULDNT_RESOLVE_HOST !! que internet soit connecté ou pas !!
Pour ceux qui veulent extraire en programmation une page html via https SSL .... désolé !
Merci
Bonne nouvelle : Les codes sources se compile bien sans erreur seulement depuis IDE de visual studio. c'est déjà ca.
Configuration: Linux / Firefox 60.0
4 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour, quelle ligne de code te retourne cette erreur?
J'ai compiler libcurl avec les directives de compilations ssl (openssl), en installant openssl depuis https://www.npcglib.org/~stathis/blog/precompiled-openssl/
.
Ca compile.
Je teste :
Et ca me renvoie :
Je perd mon temps ,
apparament il n'existe pas de composant pour télécharger des pages web depuis https.
je n'ai rien trouver sur google.
.
Ca compile.
Je teste :
Et ca me renvoie :
* Trying 216.58.204.131:443... * TCP_NODELAY set * Connected to www.google.fr (216.58.204.131) port 443 (#0) * ALPN, offering http/1.1 * SSL certificate problem: unable to get local issuer certificate * Closing connection 0
Je perd mon temps ,
apparament il n'existe pas de composant pour télécharger des pages web depuis https.
je n'ai rien trouver sur google.
je pense qu'il suffit d'appliquer ceci:
https://www.dafap.fr/blog/developpement-php/ssl-certificate-problem-unable-to-get-local-issuer-certificate
https://www.dafap.fr/blog/developpement-php/ssl-certificate-problem-unable-to-get-local-issuer-certificate
Salut yann458,
Evidemment que libcurl "fonctionne".
Si tu utilises OpenSSL, tu dois indiquer à libcurl où se trouve(ent) les certificats dans un format lisible par OpenSSL, avec l'option CURLOPT_CAPATH :
https://curl.se/libcurl/c/CURLOPT_CAPATH.html
ou alors demander à libcurl de ne pas vérifier la validité des certifcats SSL en mettant CURLOPT_SSL_VERIFYPEER à false https://curl.se/docs/sslcerts.html
Si tu utilises la Windows SSPI Schannel API, il semblerait que ce soit l'API Windows qui gère la négociation et les certificats et les trouve là où le système Windows les stocke (je ne l'ai jamais utilisée).
Dal
Evidemment que libcurl "fonctionne".
Si tu utilises OpenSSL, tu dois indiquer à libcurl où se trouve(ent) les certificats dans un format lisible par OpenSSL, avec l'option CURLOPT_CAPATH :
https://curl.se/libcurl/c/CURLOPT_CAPATH.html
ou alors demander à libcurl de ne pas vérifier la validité des certifcats SSL en mettant CURLOPT_SSL_VERIFYPEER à false https://curl.se/docs/sslcerts.html
Si tu utilises la Windows SSPI Schannel API, il semblerait que ce soit l'API Windows qui gère la négociation et les certificats et les trouve là où le système Windows les stocke (je ne l'ai jamais utilisée).
Dal