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

Le
Whaouu
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.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
phig
Le #17772161
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é....
Whaouu
Le #17773951
On 7 nov, 11:13, 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é....



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 #include
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.
phig
Le #17796931
a écrit :
On 7 nov, 11:13, 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é....



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 #include
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
Whaouu
Le #17817651
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.
Whaouu
Le #17817641
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" :)
Whaouu
Le #17818771
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.
Moua
Le #17819051
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 !
phig
Le #17819041
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...
Whaouu
Le #17821791
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.
Moua
Le #17828311
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.
Publicité
Poster une réponse
Anonyme