PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

API
Débuté par JCB, 03 juil. 2024 15:27 - 5 réponses
Membre enregistré
12 messages
Posté le 03 juillet 2024 - 15:27
Bonjour,

dans le cadre d'un développement, je dois créer une connexion sur un portail web pour déposer des documents, ils m'ont donnée du code, exemple ci-dessous mais je ne sais vraiment pas comment l'intégrer dans ma dev.
curl --location '{{root}}/v1/store/{{storeId}}/order/upload-documents' \
--header 'Accept: */*' \
--header 'Content-Type: multipart/form-data' \
--header 'Authorization: Bearer {{token}}' \
--form 'files[]=@"/path/of/your/file.pdf"' \
--form 'body="{
    \"order\": [
        {
            \"id\": 123456789,
            \"documents\": [
                {
                    \"type\": \"invoice\"
                }
            ]
        }
    ]
}"'[code:text]

si quelqu'un a une idée !!!!!
Merci d'avance.
Jean Charles
Membre enregistré
4 111 messages
Posté le 03 juillet 2024 - 23:42
Bonjour,
Je te renvoie au manuel de cURL : https://curl.se/docs/manpage.html. En lisant la signification des options et en les comparant aux propriétés du type de variable httpRequête cela devrait passer crême.
Note : location est l'URL de ta requête obtenu via un chaineconstruit. A toi de passer le bon paramètre
A la volée
httpMaReq est httpRequête
saRoot est chaîne
nStoredID est entier sur 8

httpMaReq.URL=ChaîneConstruit("%1/v1/store/%2/order/upload-documents",saRoot,nSroredID)
...

--
Il y a peut être plus simple, mais, ça tourne
Quand tout a échoué utilise l'option RTFM
Message modifié, 03 juillet 2024 - 23:48
Membre enregistré
12 messages
Posté le 22 août 2024 - 13:54
Bonjour,
je reviens sur mon post car j'ai un peu avancé !!!!! mais je n'arrive pas à tradure ce code Curl sous Windev :

curl --request POST \
--url https://api.shopping-feed.com/v1/store/9999/order/upload-documents \
--header 'Authorization: f92XXXc9a6807d39dd782330b73a6f10' \
--header 'Content-Type: multipart/form-data; boundary=---011000010111000001101001' \
--form 'files[]=@79001384-A.pdf' \
--form 'body={"order" : {"id" : 79001384, "documents" : {"type" : "invoice"}}}'


si vous pouvez m'aider.
Merci d'avance.
JC
Membre enregistré
438 messages
Posté le 22 août 2024 - 17:20
Bonjour,

Le paramètre form avec les "@" est une notation spécifique de curl, qui permet de dire facilement "mets-moi ici le buffer du contenu du fichier 79001384-A.pdf" sans avoir à gérer la lecture du fichier en ligne de commande.

Pour reproduire ce comportement en Wlangage, il est nécessaire passer par la fonction HTTPAjouteFichier(). Et donc utiliser un formulaire pour remplir le reste.

En reprenant le code exemple de Voroltinquo :

httpMaReq est httpRequête
saRoot est chaîne
nStoredID est entier sur 8
HTTPCréeFormulaire("FORM")
HTTPAjouteFichier("FORM", "files[]", "chemin/de/mon/fichier.pdf")

httpMaReq.URL=ChaîneConstruit("%1/v1/store/%2/order/upload-documents",saRoot,nSroredID)
// ...


HTTPEnvoieFormulaire("FORM", httpMaReq)
Membre enregistré
12 messages
Posté le 26 août 2024 - 20:10
Bonsoir bchanudet,

Merci pour ton retour, je vais tester cela demain.

est pour la partie body, aurais tu une idée ?
form 'body="{
    \"order\": [
        {
            \"id\": 123456789,
            \"documents\": [
                {
                    \"type\": \"invoice\"
                }
            ]
        }
    ]


Merci d'avance.
JC
Membre enregistré
12 messages
Posté le 07 septembre 2024 - 18:29
Bonjour,

je reviens vers vous car je n'y arrive pas !!! voici mon code pour le test :
httpMaReq est une chaîne
sARoot est une chaîne
sStoredID est une chaîne
CleToken est une chaîne
sUnfichier, sUnrepertoire sont des chaînes
xCpt1 est un numérique

CleToken = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
sARoot = "https://api.shopping-feed.com"
sStoredID = "XXXX"
httpMaReq = ChaîneConstruit("%1/v1/store/%2/order/upload-documents",sARoot,sStoredID)

sUnfichier = fSélecteur("D:\Facturation\","","Selectionner la facture","*.pdf","PDF",fselOuvre)

HTTPCréeFormulaire("FORM")

//pour TOUTE CHAÎNE sUnfichier DE sUnrepertoire SÉPARÉE PAR RC
HTTPAjouteParamètre("FORM","Accept","*/*")
HTTPAjouteParamètre("FORM","Content-Type","Multipart/Form-data")
HTTPAjouteParamètre("FORM","Authorization","Bearer" + CleToken)
HTTPAjouteParamètre("FORM","body","'order' : [ 'id' : 19784199805, 'documents' [ : 'type' : 'invoice' ] ]")
HTTPAjouteFichier("FORM", "files[]", sUnfichier)

SI HTTPEnvoieFormulaire ("FORM",httpMaReq,httpPost) = Faux ALORS
Erreur("Echec de l'envoi du formulaire : ", ErreurInfo())
SINON
Erreur("Erreur HTTP :", HTTPDonneRésultat(httpRésultat))
FIN


et j'ai le retour :
title : Not Found
detail : ressource does not exist

comme je ne maitrise pas du tout l'HTTP.....
Merci de votre aide.
JC