Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Demande d'aide pour l'utilisation de l'API cURL

11 réponses
Avatar
Whaouu
Bonjour, =E0 tous,

Je d=E9sirerais utiliser l'API libcurl.dll fournis avec cURL pour
effectuer des transferts SFTP.

http://curl.haxx.se/libcurl/

Quelqu'un a-t-il d=E9j=E0 utiliser cette API ?

Dans l'affirmative est-il possible d'avoir un exemple de code ?

Merci d'avance pour toute aide.

10 réponses

1 2
Avatar
phig
a écrit :
Bonjour, à tous,

Je désirerais utiliser l'API libcurl.dll fournis avec cURL pour
effectuer des transferts SFTP.

http://curl.haxx.se/libcurl/

Quelqu'un a-t-il déjà utiliser cette API ?

Dans l'affirmative est-il possible d'avoir un exemple de code ?

Merci d'avance pour toute aide.



j'utilise curl, mais en ligne de commande ( sous linux) ....
si tu y arrives, merci de nous tenir au courant.
Quand j'aurai ( si j'ai ;) ) un moment, je vais me pencher sur la
question, httprequete étant somme toute assez limité....
Avatar
Whaouu
On 7 nov, 11:13, phig wrote:
a écrit :

> Bonjour, à tous,

> Je désirerais utiliser l'API libcurl.dll fournis avec cURL pour
> effectuer des transferts SFTP.

>http://curl.haxx.se/libcurl/

> Quelqu'un a-t-il déjà utiliser cette API ?

> Dans l'affirmative est-il possible d'avoir un exemple de code ?

> Merci d'avance pour toute aide.

j'utilise curl, mais en ligne de commande ( sous linux) ....
si tu y arrives, merci de nous tenir au courant.
Quand j'aurai ( si j'ai ;) ) un moment, je vais me pencher sur la
question, httprequete étant somme toute assez limité....



En ligne de commande, cela fonctionne très bien et les possibilités
sont déjà énormes.

Mes connaissances en matière d'utilisation d'API sont proches de zéro,
mais j'ai tenté de reproduire (sans succès) un des exemples fournis
qui permettent de récupère le code HTML d'une page.

Exemple Source C :

#include <stdio.h>
#include <curl/curl.h>

int main(void)
{
CURL *curl;
CURLcode res;

curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_URL, "curl.haxx.se");
res = curl_easy_perform(curl);

/* always cleanup */
curl_easy_cleanup(curl);
}
return 0;
}

Mon Code :

nEasyhandle est un entier sans signe
nCURLcode est un entier sans signe

nCURLcode = AppelDLL32("libcurl", "curl_global_init",
"CURL_GLOBAL_ALL")
nCURLcode = AppelDLL32("libcurl", "curl_global_init",
"CURL_GLOBAL_WIN32")

nCURLcode = AppelDLL32("libcurl", "curl_easy_setopt", nEasyhandle,
"CURLOPT_URL", "http://www.google.fr/")

nCURLcode = AppelDLL32("libcurl", "curl_easy_perform", nEasyhandle)

AppelDLL32("libcurl", "curl_easy_cleanup", nEasyhandle)

Déjà, sur la ligne suivante, je récupère un code d'erreur 2 qui sem ble
indiquer une erreur d'initialisation. (CURLE_FAILED_INIT (2))

nCURLcode = AppelDLL32("libcurl", "curl_easy_setopt", nEasyhandle,
"CURLOPT_URL", "http://www.google.fr/")

Pour le moment je ne parviens pas à avancer plus en avant.

Par avance merci pour vos conseils.
Avatar
phig
a écrit :
On 7 nov, 11:13, phig wrote:
a écrit :

Bonjour, à tous,
Je désirerais utiliser l'API libcurl.dll fournis avec cURL pour
effectuer des transferts SFTP.
http://curl.haxx.se/libcurl/
Quelqu'un a-t-il déjà utiliser cette API ?
Dans l'affirmative est-il possible d'avoir un exemple de code ?
Merci d'avance pour toute aide.


j'utilise curl, mais en ligne de commande ( sous linux) ....
si tu y arrives, merci de nous tenir au courant.
Quand j'aurai ( si j'ai ;) ) un moment, je vais me pencher sur la
question, httprequete étant somme toute assez limité....



En ligne de commande, cela fonctionne très bien et les possibilités
sont déjà énormes.

Mes connaissances en matière d'utilisation d'API sont proches de zéro,
mais j'ai tenté de reproduire (sans succès) un des exemples fournis
qui permettent de récupère le code HTML d'une page.

Exemple Source C :

#include <stdio.h>
#include <curl/curl.h>

int main(void)
{
CURL *curl;
CURLcode res;

curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_URL, "curl.haxx.se");
res = curl_easy_perform(curl);

/* always cleanup */
curl_easy_cleanup(curl);
}
return 0;
}

Mon Code :

nEasyhandle est un entier sans signe
nCURLcode est un entier sans signe

nCURLcode = AppelDLL32("libcurl", "curl_global_init",
"CURL_GLOBAL_ALL")
nCURLcode = AppelDLL32("libcurl", "curl_global_init",
"CURL_GLOBAL_WIN32")

nCURLcode = AppelDLL32("libcurl", "curl_easy_setopt", nEasyhandle,
"CURLOPT_URL", "http://www.google.fr/")

nCURLcode = AppelDLL32("libcurl", "curl_easy_perform", nEasyhandle)

AppelDLL32("libcurl", "curl_easy_cleanup", nEasyhandle)

Déjà, sur la ligne suivante, je récupère un code d'erreur 2 qui semble
indiquer une erreur d'initialisation. (CURLE_FAILED_INIT (2))

nCURLcode = AppelDLL32("libcurl", "curl_easy_setopt", nEasyhandle,
"CURLOPT_URL", "http://www.google.fr/")

Pour le moment je ne parviens pas à avancer plus en avant.

Par avance merci pour vos conseils.


normal, tu passe en paramètre quelque chose qui est censé venir d'un
include ( je pense ) à savoir "CURLOPT_URL". à mon avis ( je n'ai pas
encore testé, je fais ca cette nuit, promis), ce paramètre doit être un
entier, regardes dans curl.h.

my 2 cents
Avatar
Whaouu
Les membres du site Oto mon très gentiment aider à clarifier la
situation, en effet comme tu le précises, il est nécessaire de
déclarer la valeur de tous les paramètres (je pensais naïvement que
leur valeur était incluse dans la DLL).

http://www.developpez.net

Discutions :

http://www.developpez.net/forums/d640100/environnements-developpement/winde v/wd12-probleme-dutilisation-lapi-curl/#post3766109

Mes connaissances en C étant passé limité il ne m'est pas facile de
déduire les valeurs en lisant le code, mais déjà avec l'aide qu'ils
m'ont apporté le comportement du programme est nettement plus proche
du résultat final.

Pour le moment cela donne les valeurs suivantes :

CURL_GLOBAL_SSL = 1
CURL_GLOBAL_WIN32 = 2
CURL_GLOBAL_ALL = 3
CURL_GLOBAL_NOTHING = 0
CURL_GLOBAL_DEFAULT = 3

CURLOPT_URL = 10002 // A vérifier

Voilà où j'en suis au moment de la rédaction de ce message.
Avatar
Whaouu
On 12 nov, 10:14, wrote:
Les membres du site Oto mon très gentiment aider à clarifier la...



Rectificatif : petite erreur de copier collée, il fallais lire "du
site Developpez" :)
Avatar
Whaouu
Grace a l'aide que j'ai reçu sur Developpez, j'ai trouvé l'ensemble
dès valeur des paramètres dans le fichier vblibcurl.odl, utilisé en
VB.

Fichier :

http://sourceforge.net/projects/libcurl-vb/

Maintenant il me manque la façon d'aller lire le buffer de :

AppelDLL32("libcurl", "curl_easy_perform", nEasyhandle)

Qui devrais contenir le code de la page HTML.
Avatar
Moua
a présenté l'énoncé suivant :
Grace a l'aide que j'ai reçu sur Developpez, j'ai trouvé l'ensemble
dès valeur des paramètres dans le fichier vblibcurl.odl, utilisé en
VB.

Fichier :

http://sourceforge.net/projects/libcurl-vb/

Maintenant il me manque la façon d'aller lire le buffer de :

AppelDLL32("libcurl", "curl_easy_perform", nEasyhandle)

Qui devrais contenir le code de la page HTML.



Bonjour

//
// Déclaration des variables
//
sInfoRetour est une chaine = "" // Le texte du buffet
nEasyhandle est un entier = 0 // L'addresse du buffet
//
// Appel de la DLL, on y passe un pointeur vers l'adresse du buffet
//
AppelDLL32("libcurl", "curl_easy_perform", &nEasyhandle)
//
// Récupération du buffet à partir de son addresse mémoire
//
sInfoRetour = ChaîneRécupère(nEasyhandle, crAdresseASCIIZ)

Normalement çà marche, le buffet est servi, bon appétit !
Avatar
phig
a écrit :
Grace a l'aide que j'ai reçu sur Developpez, j'ai trouvé l'ensemble
dès valeur des paramètres dans le fichier vblibcurl.odl, utilisé en
VB.

Fichier :

http://sourceforge.net/projects/libcurl-vb/

Maintenant il me manque la façon d'aller lire le buffer de :

AppelDLL32("libcurl", "curl_easy_perform", nEasyhandle)

Qui devrais contenir le code de la page HTML.


as-tu regardé du coté de l'assemblage .net pour curl, qui m'a l'air plus
facile à manipuler...
Avatar
Whaouu
Merci Moua pour la commande ChaîneRécupère.

Mais il semble que cela soit plus complexe pour lire les données.

Pour le moment mon code ressemble à ça :

//
*************************************************************************** ************* //

// curl_init_flag
nCURL_GLOBAL_NOTHING est un entier = 0
nCURL_GLOBAL_SSL est un entier = 1
nCURL_GLOBAL_WIN32 est un entier = 2
nCURL_GLOBAL_ALL est un entier = 3
nCURL_GLOBAL_DEFAULT est un entier = 3

// CURLoption
nCURLOPT_ERRORBUFFER est un entier = 10010
nCURLOPT_URL est un entier = 10002
nCURLOPT_VERBOSE est un entier = 41
nCURLOPT_WRITEDATA est un entier = 10001
nCURLOPT_WRITEFUNCTION est un entier = 20011

nEasyhandle est un entier = 0
nCURLcode est un entier système
sInfoRetour est une chaîne = ""

nCURLcode = AppelDLL32("libcurl", "curl_global_init",
nCURL_GLOBAL_ALL)
nCURLcode = AppelDLL32("libcurl", "curl_global_init",
nCURL_GLOBAL_WIN32)

nEasyhandle = AppelDLL32("libcurl", "curl_easy_init")

nCURLcode = AppelDLL32("libcurl", "curl_easy_setopt", nEasyhandle,
nCURLOPT_URL, "http://www.google.fr/")

sInfoRetour = ChaîneRécupère(nEasyhandle, crAdresseASCIIZ)

Trace(sInfoRetour)

AppelDLL32("libcurl", "curl_easy_perform", nEasyhandle)

AppelDLL32("libcurl", "curl_easy_cleanup", nEasyhandle)

//
*************************************************************************** ************* //

Le problème, c'est que je ne récupère strictement rien avec...

Je n'ai pas encore regardé du côté de NET car cela m'oblige à le
déployer sur les postes client ce que je voudrais éviter.

Il semble qu'il soit nécessaire d'utiliser CURLOPT_WRITEFUNCTION pour
lire les données comme je l'ai vue dans l'exemple suivant :

http://www.commentcamarche.net/forum/affich-9060910-un-prog-pour-lire-la-so urce-d-une-page-web?page=2

Voilà, en bref pour le moment ça avance, mais rien de concluant.
Avatar
Moua
a exprimé avec précision :
Merci Moua pour la commande ChaîneRécupère.

Mais il semble que cela soit plus complexe pour lire les données.

Pour le moment mon code ressemble à ça :

//
****************************************************************************************
//

// curl_init_flag
nCURL_GLOBAL_NOTHING est un entier = 0
nCURL_GLOBAL_SSL est un entier = 1
nCURL_GLOBAL_WIN32 est un entier = 2
nCURL_GLOBAL_ALL est un entier = 3
nCURL_GLOBAL_DEFAULT est un entier = 3

// CURLoption
nCURLOPT_ERRORBUFFER est un entier = 10010
nCURLOPT_URL est un entier = 10002
nCURLOPT_VERBOSE est un entier = 41
nCURLOPT_WRITEDATA est un entier = 10001
nCURLOPT_WRITEFUNCTION est un entier = 20011

nEasyhandle est un entier = 0
nCURLcode est un entier système
sInfoRetour est une chaîne = ""

nCURLcode = AppelDLL32("libcurl", "curl_global_init",
nCURL_GLOBAL_ALL)
nCURLcode = AppelDLL32("libcurl", "curl_global_init",
nCURL_GLOBAL_WIN32)

nEasyhandle = AppelDLL32("libcurl", "curl_easy_init")

nCURLcode = AppelDLL32("libcurl", "curl_easy_setopt", nEasyhandle,
nCURLOPT_URL, "http://www.google.fr/")

sInfoRetour = ChaîneRécupère(nEasyhandle, crAdresseASCIIZ)

Trace(sInfoRetour)

AppelDLL32("libcurl", "curl_easy_perform", nEasyhandle)

AppelDLL32("libcurl", "curl_easy_cleanup", nEasyhandle)

//
****************************************************************************************
//

Le problème, c'est que je ne récupère strictement rien avec...

Je n'ai pas encore regardé du côté de NET car cela m'oblige à le
déployer sur les postes client ce que je voudrais éviter.

Il semble qu'il soit nécessaire d'utiliser CURLOPT_WRITEFUNCTION pour
lire les données comme je l'ai vue dans l'exemple suivant :

http://www.commentcamarche.net/forum/affich-9060910-un-prog-pour-lire-la-source-d-une-page-web?page=2

Voilà, en bref pour le moment ça avance, mais rien de concluant.


Bonjour,

Pour moi, il manque le & devant le nom du pointeur dans l'appel de la
DLL.
1 2