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 :

envoi de donnée POST avec Webborwser>>Navigate (variable de type "Byte")


Sujet :

WinDev

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2010
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 73
    Par défaut envoi de donnée POST avec Webborwser>>Navigate (variable de type "Byte")
    Bonjour à tous !

    J'essaye d'envoyer des données en POST via l'ActiveX Webbrowser.
    J'ai trouvé la doc officielle de Microsoft ici

    L'exemple donnée est le suivant :

    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
          Sub Command1_Click()
             Dim URL As String
             Dim Flags As Long
             Dim TargetFrame As String
             Dim PostData() As Byte
             Dim Headers As String
     
             URL = "http://YourServer" ' A URL that will accept a POST
             Flags = 0
             TargetFrame = ""
     
             PostData = "Information sent to host"
     
             ' VB creates a Unicode string by default so we need to
             ' convert it back to Single byte character set.
             PostData = StrConv(PostData, vbFromUnicode)
     
             Headers = "Content-Type: application/x-www-form-urlencoded" & _
                vbCrlf
             WebBrowser1.Navigate URL, Flags, TargetFrame, PostData, Headers
          End Sub
    Mon problème est que lorsque je veux traduire ce code en Windev je ne sais pas comment déclarer ma variable "PostData"...
    Après quelques recherche j'ai vu qu'une variable de type "Byte" correspondrait a "un entier non signé de 1 octet" j'ai donc écrit mon code comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    url est une chaîne = "http://xxx.fr/post/cible.php"
    postdata est un entier sans signe sur 1 octet
     
    postdata = "prenom=test"
    postdata = UnicodeVersAinsi(postdata)
     
    Headers est une chaîne = "Content-Type: application/x-www-form-urlencoded"
    flag est un entier = 0
    targetname est une chaîne =  ""
     
    ActiveX1>>Navigate(url,flag,targetname,postdata,Headers)
    Sauf que ma requête part en "GET" et non pas en "POST"...

    Dans l'exemple la variable est définie comme ceci "Dim PostData() As Byte"

    que veulent dire les parenthèses ...? Il me semblerait logique que la variable représente une sorte de tableau ou de buffer pour pouvoir contenir l'ensemble de mes paramètre et non pas un "simple" entier...

    Bref je suis dans le flou !! Est-ce que quelqu'un pourrait m'éclairer ...?

  2. #2
    Membre averti
    Inscrit en
    Mai 2010
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 73
    Par défaut
    Bon comme d'hab c'est quand on se décide à poster qu'on trouve (une partie de) la solution !

    Effectivement pour stocker une chaine de caractère il vaut mieux un tabelau d'entier qu'un seul entier ^^

    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
     
    url est une chaine = "http://XXX/post/cible.php"
    postdata est un tableau de 0 entier sans signe sur 1 octet
     
    post_st est une chaîne = "prenom=test"
     
    nb est un entier = Taille(post_st)
    POUR i = 1 A nb
    	TableauAjoute(postdata,Asc(Milieu(post_st,i,i+1)))
    FIN
     
    Headers est une chaîne = "Content-Type: application/x-www-form-urlencoded"
    flag est un entier = 0
    targetname est une chaîne =  ""
     
    ActiveX1>>Navigate(url,flag,targetname,postdata,Headers)
    Avec ce code mes postdata partent bien, la requête est en POST tout va bien ! mais n'y a-t-il pas une fonction pour convertir une chaine en ASCII ?? la fonction "Asc()" ne converti que le premier caractère de la chaine...

  3. #3
    Membre chevronné

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    19 647
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 19 647
    Par défaut
    Au pire, tu boucles sur la longueur de la chaîne

  4. #4
    Membre averti
    Inscrit en
    Mai 2010
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 73
    Par défaut
    Citation Envoyé par Guardian Voir le message
    Au pire, tu boucles sur la longueur de la chaîne
    Oui c'est ce que j'ai fait mais j'aurais préféré une fonction a une boucle ^^ enfin si c'est la seule solution ca me va, j'ai posté le code pour les suivants

  5. #5
    Membre Expert
    Inscrit en
    Août 2010
    Messages
    732
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 732
    Par défaut
    J'allais vous dire d'utiliser une chaîne directement, mais vu qu'un SAFEARRAY doit être passé, il se peut que vous deviez passer par un tableau d'entiers effectivement.

    Dans ce cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Dimension(tabLeTableau, Taille(LaChaîne))
    Transfert(&tabLeTableau, &sLaChaîne, Taille(LaChaîne))
    Mais essayez tout de même avec une chaîne directement, on ne sait jamais.

Discussions similaires

  1. Envoi de données entières avec boost::asio
    Par K-you dans le forum Boost
    Réponses: 5
    Dernier message: 28/03/2010, 09h07
  2. [PHP 5.0] Envois de données POST sans formulaire - Curl
    Par phoelis1 dans le forum Langage
    Réponses: 5
    Dernier message: 30/04/2009, 20h05
  3. [AJAX] Envoi de données POST vers page d'impression
    Par oneTime dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 15/10/2008, 12h36
  4. Envoie de donnée binaires avec les sockets
    Par java_developper dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 01/06/2007, 11h11

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