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

[wd12] HTTPREQUETE méthode POST - mise à jour d'une page wiki

6 réponses
Avatar
hsteph
Bonjour à tous,

C'est mon premier post dans ce NG. Je ne suis pas un développeur pro. J'ai
cependant quelques restes d'un passé très lointain où mon métier était de
développer des applis, ..
Je m'essaie à windev 12 dans le but de faire quelques 'utilitaires'.

Je recherche à modifier le contenu d'une page wiki avec la méthode post de
httprequete.
La page de mon wiki (en maj) se présente comme ceci :
http://pmwiki.confluence.free.fr/index.php?n=Main.WikiSandbox?action=edit

En bas de page, j'ai 4 choix : (save, save&dit, preview cancel)

Les paramêtres "input" sont les suivants :

StrParam += "basetime=1205318858"
StrParam += "&text=toto"
StrParam += "&csum=text windev"
StrParam += "&author=steph"
StrParam += "&diffclass=minor"

Res =
HTTPRequête("http://pmwiki.confluence.free.fr/index.php?action=edit?n=Main.WikiSandbox?","","",StrParam)

Je coince sur le "comment valider l'action SAVE" sachant que j'ai 4 choix
différents :

<input type='submit' name='post' value=' Save ' class='e_button'
accesskey='s' />
<input type='submit' name='postedit' value=' Save and edit '
class='e_button' accesskey='u' />
<input type='submit' name='preview' value=' Preview ' class='e_button'
accesskey='p' />
<input type='submit' name='cancel' value=' Cancel ' class='e_button' />

Merci pour vos commentaires éventuels !

Stéphane

6 réponses

Avatar
hsteph
"hsteph" wrote :

Je coince sur le "comment valider l'action SAVE" sachant que j'ai 4 choix
différents :

<input type='submit' name='post' value=' Save ' class='e_button'
accesskey='s' />
<input type='submit' name='postedit' value=' Save and edit '
class='e_button' accesskey='u' />
<input type='submit' name='preview' value=' Preview ' class='e_button'
accesskey='p' />
<input type='submit' name='cancel' value=' Cancel ' class='e_button' />

Merci pour vos commentaires éventuels !



pour info, il faut ajouter "&post=+Save+" dans le paramètre <message à
envoyer> de httprequete.
Cela m'amène à une question complémentaire : comment encoder le text (body)
dans la méthode POST ?

J'ai bien vu l'existence de la fonction URLEncode() mais cette fonction
n'encode que l'URL (et pas le texte passé dans la méthode POST)

si mon texte est le suivant :
La chaine contient le caractère & et "ceci", ...

le texte encodé est :
La+chaine+contient+le+caract%C3%A8re+%26+et+%22ceci%22%2C+...

Avez vous une piste ?

Merci

Stéphane
Avatar
patrice
hsteph a écrit :
"hsteph" wrote :

Je coince sur le "comment valider l'action SAVE" sachant que j'ai 4 choix
différents :

<input type='submit' name='post' value=' Save ' class='e_button'
accesskey='s' />
<input type='submit' name='postedit' value=' Save and edit '
class='e_button' accesskey='u' />
<input type='submit' name='preview' value=' Preview ' class='e_button'
accesskey='p' />
<input type='submit' name='cancel' value=' Cancel ' class='e_button' />

Merci pour vos commentaires éventuels !



pour info, il faut ajouter "&post=+Save+" dans le paramètre <message à
envoyer> de httprequete.
Cela m'amène à une question complémentaire : comment encoder le text (body)
dans la méthode POST ?

J'ai bien vu l'existence de la fonction URLEncode() mais cette fonction
n'encode que l'URL (et pas le texte passé dans la méthode POST)

si mon texte est le suivant :
La chaine contient le caractère & et "ceci", ...

le texte encodé est :
La+chaine+contient+le+caract%C3%A8re+%26+et+%22ceci%22%2C+...

Avez vous une piste ?




oui, en post (contrairement au get), les données sont passées dans les
headers et non dans l'url
donc pas besoin d'encodage
Avatar
hsteph
"patrice" wrote :

oui, en post (contrairement au get), les données sont passées dans les
headers et non dans l'url
donc pas besoin d'encodage



J'ai eu besoin de faire ceci tout de même sur le texte à transmettre :

sStrText = Remplace(sStrText,"%","%25")
sStrText = Remplace(sStrText,"&","%26")
sStrText = Remplace(sStrText,"=","%3D")

Une autre curiosité : le User-Agent est passé à vide dans le POST, ... alors
qu'il est renseigné automatiquement dans le GET
Il faut faire un truc du genre EnteteSupplementaire = "User-Agent: PC SOFT
Framework"+RC pour initialiser User-Agent à la même valeur.

autre détail :
a) si l'on ne fait pas de RC sur EnteteSupplementaire , windev se bloque
lors de l'execution de httprequete, ...
b) la syntaxe <Message à envoyer> : Donner tous les "INPUT=valeur" (sans
espace) séparé par des RC : NomParametre=Valeur"+RC+ ... ne fonctionne pas.
Je suis passé par le mécanisme &param1=valeur&param2=valeur etc ...

Est-ce un bug ? une caractéristique ?

Merci pour vos infos.

Stéphane
Avatar
patrice
si tu utilise &param= alors tu doit quoter (utilise plutot urlencode que des
replace sauvages)
mais tu n'as aucune garantie (personne n'oblige un formulaire post à
accepter les parametres en get)

vaux mieux coder les posts dans les headers
essaye ca : (message de 'patrice')
http://groups.google.fr/group/fr.comp.developpement.agl.windev/browse_frm/thread/a42c02f54c6f9c95/b8add3bea7ec50e8?hl=fr&lnk=st&q=WD9++httprequete++boundary#b8add3bea7ec50e8



"hsteph" <h(sans dot) a écrit dans le message de
news:47ed00cc$0$21142$

"patrice" wrote :

> oui, en post (contrairement au get), les données sont passées dans les
> headers et non dans l'url
> donc pas besoin d'encodage

J'ai eu besoin de faire ceci tout de même sur le texte à transmettre :

sStrText = Remplace(sStrText,"%","%25")
sStrText = Remplace(sStrText,"&","%26")
sStrText = Remplace(sStrText,"=","%3D")

Une autre curiosité : le User-Agent est passé à vide dans le POST, ...


alors
qu'il est renseigné automatiquement dans le GET
Il faut faire un truc du genre EnteteSupplementaire = "User-Agent: PC SOFT
Framework"+RC pour initialiser User-Agent à la même valeur.

autre détail :
a) si l'on ne fait pas de RC sur EnteteSupplementaire , windev se bloque
lors de l'execution de httprequete, ...
b) la syntaxe <Message à envoyer> : Donner tous les "INPUT=valeur" (sans
espace) séparé par des RC : NomParametre=Valeur"+RC+ ... ne fonctionne


pas.
Je suis passé par le mécanisme &param1=valeur&param2=valeur etc ...

Est-ce un bug ? une caractéristique ?

Merci pour vos infos.

Stéphane




Avatar
hsteph
"patrice" wrote :

vaux mieux coder les posts dans les headers
essaye ca : (message de 'patrice')
http://groups.google.fr/group/fr.comp.developpement.agl.windev/browse_frm/thread/a42c02f54c6f9c95/b8add3bea7ec50e8?hl=fr&lnk=st&q=WD9++httprequete++boundary#b8add3bea7ec50e8



thanks, je crois que cela peut servir à faire du téléchargement de fichier
également.
Merci

Stéphane
Avatar
patrice
"hsteph" <h(sans dot) a écrit dans le message de
news:47ed18da$0$21143$

"patrice" wrote :

> vaux mieux coder les posts dans les headers
> essaye ca : (message de 'patrice')
>


http://groups.google.fr/group/fr.comp.developpement.agl.windev/browse_frm/thread/a42c02f54c6f9c95/b8add3bea7ec50e8?hl=fr&lnk=st&q=WD9++httprequete++boundary#b8add3bea7ec50e8

thanks, je crois que cela peut servir à faire du téléchargement de fichier
également.



plutot de l'upload, mais ca a tendance à déconner si ton fichier contient
des codes 0 (httprequete utilise des chaines et non des buffer)