IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WinDev Discussion :

Probleme avec libcurl API [WD7.5]


Sujet :

WinDev

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné Avatar de Vince
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    369
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 369
    Par défaut Probleme avec libcurl API
    Bonjour,


    J'essaie d'utiliser la librairie libcurl (API) : http://curl.haxx.se/

    J'ai écrit un bout de code pour uploader un fichier vers un serveur FTP mais ça ne fonctionne pas. Pouvez vous m'aider ?
    La connexion s'établit au serveur mais le transfert ne se fait pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    NEasyhandle est un entier
    strCheminFic est une chaîne
    strNomFic est une chaîne
     
    strNomFic = "upload.txt"
    strCheminFic = "C:\WINXP\Profiles\25099819\Desktop\libcurl\";
     
    NEasyhandle = AppelDLL32(fRepExe()+"\libcurl","curl_easy_init")
     
    SI NEasyhandle = 0 ALORS
        Erreur(ErreurInfo())
    SINON   
        iReturn est un entier sans signe
        iErreur est un entier   
     
        iErreur = AppelDLL32("libcurl", "curl_easy_setopt", NEasyhandle, CURLOPT_URL, "ftp://vince:password@127.0.0.1/" + strNomFic)
        lblInfo = lblInfo + "CURLOPT_URL = " + iErreur + RC   
     
        iErreur = AppelDLL32("libcurl", "curl_easy_setopt", NEasyhandle, CURLOPT_UPLOAD, "1")
        lblInfo = lblInfo + "CURLOPT_UPLOAD = " + iErreur + RC
     
        iFichier est un entier
        iFichier = fOuvre(strCheminFic + strNomFic, foLecture )
        lblInfo = lblInfo + "Pointeur fichier : " + &iFichier + " - " +fTaille(strCheminFic + strNomFic) + " Octets" + RC
     
        iErreur = AppelDLL32("libcurl", "curl_easy_setopt", NEasyhandle, CURLOPT_INFILE, iFichier )
        lblInfo = lblInfo + "CURLOPT_INFILE = " + iErreur + RC
     
        iErreur =  AppelDLL32("libcurl", "curl_easy_setopt", NEasyhandle, CURLOPT_INFILESIZE, fTaille(strCheminFic + strNomFic) )
        lblInfo = lblInfo + "CURLOPT_INFILESIZE = " + iErreur + RC       
     
        //------------------------- TRANSFERT ------------------------   
        iErreur = AppelDLL32("libcurl", "curl_easy_perform",NEasyhandle)
        lblInfo = lblInfo + "curl_easy_perform = " + iErreur + RC
        //------------------------------------------------------------
     
        fFerme(iFichier)
     
        AppelDLL32("libcurl", "curl_easy_cleanup",NEasyhandle)//fermeture de la session curl
     
        DéchargeDLL(NEasyhandle)
     
    FIN
    Merci d'avance de votre aide

  2. #2
    Membre Expert Avatar de EDM-TAHITI
    Homme Profil pro
    Directeur Service informatique et projet développement
    Inscrit en
    Janvier 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Directeur Service informatique et projet développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2010
    Messages : 994
    Par défaut
    Hello,
    J'ai regardé votre code et j'y vois peut-être une mauvaise interpretation avec votre variable IFICHIER (qui est une constante de WINDEV)
    Il faut donc remplacer Ifichier par IDFICHIER (qui me semble plus parlant) et de refaire les tests.
    En effet, vous utilisez le pointeur '&' et celui-ci doit pointer sur la constante et non sur l'Id d'ouverture fichier.
    A voir donc
    Amicalement

  3. #3
    Membre chevronné Avatar de Vince
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    369
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 369
    Par défaut
    Merci de ta réponse (dsl je tutoie tout le monde sur Internet ),

    Quand tu parle de "ifichier" tu veux parler de cette ligne :
    iErreur = AppelDLL32("libcurl", "curl_easy_setopt", NEasyhandle, CURLOPT_INFILE, iFichier )

    Je ne savais pas que iFichier était une constante de Windev.
    J'ai changé ma variable par iFich, mais ça ne marche toujours pas. L'upload du fichier ne se fait pas .

    Voici le code comme je l'ai changé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    (...)
    iFich est un entier
    iFich = fOuvre(strCheminFic + strNomFic, foLecture )
    iErreur = AppelDLL32("libcurl", "curl_easy_setopt", NEasyhandle, CURLOPT_INFILE, iFich )
    (...)
    Voici la trace du code complet modifié suite au précédent conseil coté serveur FTP :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    [09:36:15] - [71] Connect to 127.0.0.1. Get Username.
    [09:36:15] - [71] KEYWORD: USER -- PARAMS: vince
    [09:36:15] - [71] KEYWORD: PASS -- PARAMS:  #####
    [09:36:15] - [71] User VINCE Connected
    [09:36:15] - [71] VINCE: Current Directory: D:\FTP\
    [09:36:15] - [71] KEYWORD: PWD -- PARAMS: 
    [09:36:15] - [71] KEYWORD: EPSV -- PARAMS: 
    [09:36:15] - [71] KEYWORD: PASV -- PARAMS: 
    [09:36:15] - [71] KEYWORD: TYPE -- PARAMS: I
    [09:36:15] - [71] KEYWORD: STOR -- PARAMS: upload.txt
    [09:36:15] - [71] VINCE: Start Upload of D:\FTP\upload.txt
    [09:36:19] - [71] VINCE: Upload Fail of D:\FTP\upload.txt (0,00 K/S -    0 bytes)
    [09:36:19] - [71] Client VINCE, 127.0.0.1 Disconnected (00:00:04 Min)

  4. #4
    Membre Expert
    Avatar de Emmanuel Lecoester
    Profil pro
    Inscrit en
    Février 2003
    Messages
    1 493
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Février 2003
    Messages : 1 493
    Par défaut
    VINCE a-t-il les droits d'écriture sur le serveur FTP ?

  5. #5
    Membre chevronné Avatar de Vince
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    369
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 369
    Par défaut
    Citation Envoyé par Emmanuel Lecoester Voir le message
    VINCE a-t-il les droits d'écriture sur le serveur FTP ?
    Oui il a le droit, j'ai testé avec un client FTP (FileZilla) et ce compte.

  6. #6
    Membre Expert Avatar de EDM-TAHITI
    Homme Profil pro
    Directeur Service informatique et projet développement
    Inscrit en
    Janvier 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Directeur Service informatique et projet développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2010
    Messages : 994
    Par défaut
    Hello,
    Je résume la situation, vous avez un serveur FTP sur une machine (la meme que le developpement, au prime abord) puisque l'adresse est 127.0.0.1
    J'ai regardé la doc de cURL, très complète et bien faite. Cela semble etre une bonne interface. Toutefois, les fonctions de Windev en matière de FTP sont également très bien faites. Elles permettent de récupérer des fichiers FTP sur des serveurs, que la connexion soit par accès distant ou ADSL.
    A ce stade, je ne puis tester ce petit logiciel pleins de promesses, me semble-t-il. Aussi, pourquoi n'essayez-vous pas de faire la même chose avec les procedure FTP (entre autres):
    FTPENVOIS
    FTPRECUPERE

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    	Message("DEMANDE DE CONNEXION AU SERVEUR FTP")
    	ftp_idconnexion = FTPConnecte(SansEspace(CLIENTS1.FTP_ADRESSE),FTP_LOGGIN,FTP_PASSWORD)//,ftp_numport,faux)
    	// regarde si idconnexion valide
    	SI ftp_idconnexion <> -1 ALORS
    		SI PAS FTPRécupère (ftp_IdConnexion,sFichierServeur,sFichierClient,"TransfertFTP") ALORS
    			Erreur("Echec lors du transfert de "+sFichierServeur +" vers " + sFichierClient)
    			Info(ErreurInfo(errMessage))
    			resultat = Faux
    		FIN
     
                 FIN
    L'avantage, c'est de pouvoir tout gérer dans windev, sans avoir recours à des logiciels externes. Je sais que ma réponse ne va pas directement à la problèmatique, mais c'est une autre piste. D'autant que les parametres passés dans cURL sont identiques à ceux passé dans les fonction FTP.
    En quelques lignes, vous pouvez recrééer les mêmes fonction que cURL...
    Autre piste à creuser
    Amicalement

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. probleme avec libcurl
    Par Jérémy Lefevre dans le forum Bibliothèques
    Réponses: 1
    Dernier message: 20/04/2007, 13h05
  2. [Platform] Probleme avec l'API Dialog
    Par bulbo dans le forum NetBeans
    Réponses: 2
    Dernier message: 16/01/2007, 09h24
  3. Probleme avec l'API javax.comm
    Par rousni dans le forum Entrée/Sortie
    Réponses: 11
    Dernier message: 16/06/2006, 12h48
  4. Petit probleme avec l'API win32
    Par spiky31 dans le forum Windows
    Réponses: 3
    Dernier message: 24/01/2006, 16h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo