PC SOFT

PROFESSIONAL NEWSGROUPS
WINDEVWEBDEV and WINDEV Mobile

API
Started by JCB, Jul., 03 2024 3:27 PM - 5 replies
Registered member
12 messages
Posted on July, 03 2024 - 3:27 PM
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
Registered member
4,184 messages
Posted on July, 03 2024 - 11:42 PM
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 modified, July, 03 2024 - 11:48 PM
Registered member
12 messages
Posted on August, 22 2024 - 1:54 PM
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
Registered member
458 messages
Posted on August, 22 2024 - 5:20 PM
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)
Registered member
12 messages
Posted on August, 26 2024 - 8:10 PM
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
Registered member
12 messages
Posted on September, 07 2024 - 6:29 PM
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