PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → inserer une variable dans un tableau json
inserer une variable dans un tableau json
Iniciado por lighttechnologie, 24,jul. 2020 04:31 - 4 respuestas
Miembro registrado
9 mensajes
Publicado el 24,julio 2020 - 04:31
Bonjour à tous.
je dois attaquer un webservice avec la methode post. sauf que ce webservice est en json.
J'ai ecris le code que voici
sToken est chaîne="xxxxxxxxxxxxxxxxxxxxxx"
cMyRequest is restRequest
scheduleRequest is restRequest
cMyRequest..URL = "https://api.letexto.com/v1/campaigns"
cMyRequest..Entête["Authorization"] = "Bearer "+sToken
cMyRequest..Méthode = httpPost
cMyRequest..ContentType = "application/json"
sParametres est une chaîne
sParametres=[
{
"step": null,
"sender": "L.TECH",
"name": "Ma CAMP",
"campaignType": "SIMPLE",
"recipientSource": "CUSTOM",
"groupId": null,
"filename": null,
"saveAsModel": false,
"destination": "NAT",
"message": "message",
"emailText": null,
"recipients": [{
"phone": "22506077966"
}],
"sendAt": [],
"dlrUrl": "",
"responseUrl": ""
paramvariable
}
]
cMyRequest..Contenu = ChaîneVersUTF8(sParametres)
cMyResponse is restResponse = RESTEnvoie(cMyRequest)
SI (cMyResponse..StatusCode)=200 ALORS
Info("Erreur")
SINON
IF ErreurDétectée THEN
Error(ErrorInfo(errComplet))
ELSE
decodeResponse est Variant =JSONVersVariant( cMyResponse..Content)
//(cMyResponse..StatusCode) == 200 check si le statut est 200 avant d'executer la seconde requete
scheduleRequest..URL = "https://api.letexto.com/v1/campaigns/"+decodeResponse.id+"/schedules"
scheduleRequest..Entête["Authorization"] = "Bearer"+sToken
scheduleRequest..Méthode = httpPost
scheduleRequest..ContentType = "application/json"
scheduleRequest..Contenu = ChaîneVersUTF8(sParametres)
scheduleResponse is restResponse = RESTEnvoie(scheduleRequest)
Info(scheduleResponse.Contenu,decodeResponse.id)

END
FIN

Ce code fonctionne à merveille.
Mon problème est que je dois maintenant remplacer le contenu de la variable Sparametres par des variables qui seront fournies par l'utilisateur.
Il s'agit des contenus:
"sender": "L.TECH" ( L.TECH étant une variable identifiant l'expediteur du message)
"message": "message" (message étant le contenu du message à envoyer")
"recipients": [{
"phone": "22506077966"
}], (22506077966 étant le numero du destinataire)
Pour ce faire, j'ai ecris un nouveau code que voici
paramvariable est Variant
numtel est chaîne="22506077966"
tabRecipient est un tableau[2] de chaînes
tabRecipient[1]="phone:"
tabRecipient[2]=numtel
paramvariable.step=Null
paramvariable.sender= "L.TECH"
paramvariable.name= "Ma CAMP"
paramvariable.campaignType= "SIMPLE"
paramvariable.recipientSource= "CUSTOM"
paramvariable.groupId=Null
paramvariable.filename=Null
paramvariable.saveAsModel=False
paramvariable.destination= "NAT"
paramvariable.message="test sms"
paramvariable.emailText=Null
paramvariable.recipients=tabRecipient[1]+tabRecipient[2]
paramvariable.sendAt= []
paramvariable.dlrUrl= ""
paramvariable.responseUrl= ""
sToken est chaîne="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
cMyRequest is restRequest
scheduleRequest is restRequest
cMyRequest..URL = "https://api.letexto.com/v1/campaigns"
cMyRequest..Entête["Authorization"] = "Bearer "+sToken
//a04ea35db9bcase387e8360c4498173"
cMyRequest..Méthode = httpPost
cMyRequest..ContentType = "application/json"
cMyRequest..Contenu = ChaîneVersUTF8(paramvariable)//sParametres)
cMyResponse is restResponse = RESTEnvoie(cMyRequest)
Info(cMyResponse.Contenu)
SI (cMyResponse..StatusCode) = 200 ALORS
Info("Erreur")
SINON
IF ErreurDétectée THEN
Error(ErrorInfo(errComplet))
ELSE
decodeResponse est Variant =JSONVersVariant( cMyResponse..Content)
scheduleRequest..URL = "https://api.letexto.com/v1/campaigns/"+decodeResponse.id+"/schedules"
scheduleRequest..Entête["Authorization"] = "Bearer"+sToken
scheduleRequest..Méthode = httpPost
scheduleRequest..ContentType = "application/json"
scheduleRequest..Contenu = ChaîneVersUTF8(paramvariable)
scheduleResponse is restResponse = RESTEnvoie(scheduleRequest)
Info(scheduleResponse.Contenu,decodeResponse.id)
END
FIN

et je but sur ce message



A vrai dire, je ne maîtrise pas grand chose sur le json.
Une aide me rendrais énormément service car cela fait maintenant une semaine que je plante
Merci beaucoup
Miembro registrado
1.002 mensajes
Publicado el 24,julio 2020 - 07:45
Bonjour,

Remplace ta ligne
cMyRequest..Contenu = ChaîneVersUTF8(paramvariable)
scheduleRequest..Contenu = ChaîneVersUTF8(paramvariable)

par
cMyRequest..Contenu = ChaîneVersUTF8(VariantVersJSON(paramvariable))
scheduleRequest..Contenu = ChaîneVersUTF8(VariantVersJSON(paramvariable))


jordan
Miembro registrado
9 mensajes
Publicado el 25,julio 2020 - 07:07
Merci Jordan pour ta réponse.
j'ai remplacé ces deux lignes comme tu me l'a demandé. Mais je reçois
le message comme le montre la capture d'écran.
Je pense bien que c'est à cause de la version de la version de windev (windev 20)


Miembro registrado
1.002 mensajes
Publicado el 25,julio 2020 - 12:40
Bonjour,

et comme ca ?

paramvariable est Variant
tabRecipient est un variant
tabRecipient.phone = "22506077966"
paramvariable.step=Null
paramvariable.sender= "L.TECH"
paramvariable.name= "Ma CAMP"
paramvariable.campaignType= "SIMPLE"
paramvariable.recipientSource= "CUSTOM"
paramvariable.groupId=Null
paramvariable.filename=Null
paramvariable.saveAsModel=False
paramvariable.destination= "NAT"
paramvariable.message="test sms"
paramvariable.emailText=Null
paramvariable.recipients[1]=tabRecipient
paramvariable.sendAt[1]= Null
paramvariable.dlrUrl= ""
paramvariable.responseUrl= ""
sToken est chaîne="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
cMyRequest is restRequest
scheduleRequest is restRequest
cMyRequest..URL = "https://api.letexto.com/v1/campaigns"
cMyRequest..Entête["Authorization"] = "Bearer "+sToken
//a04ea35db9bcase387e8360c4498173"
cMyRequest..Méthode = httpPost
cMyRequest..ContentType = "application/json"
cMyRequest..Contenu = ChaîneVersUTF8(VariantVersJSON(paramvariable))//sParametres)
cMyResponse is restResponse = RESTEnvoie(cMyRequest)
Info(cMyResponse.Contenu)
SI (cMyResponse..StatusCode) = 200 ALORS
Info("Erreur")
SINON
IF ErreurDétectée THEN
Error(ErrorInfo(errComplet))
ELSE
decodeResponse est Variant =JSONVersVariant( cMyResponse..Content)
scheduleRequest..URL = "https://api.letexto.com/v1/campaigns/"+decodeResponse.id+"/schedules"
scheduleRequest..Entête["Authorization"] = "Bearer"+sToken
scheduleRequest..Méthode = httpPost
scheduleRequest..ContentType = "application/json"
scheduleRequest..Contenu = ChaîneVersUTF8(VariantVersJSON(paramvariable))
scheduleResponse is restResponse = RESTEnvoie(scheduleRequest)
Info(scheduleResponse.Contenu,decodeResponse.id)
END
FIN


Jordan
Miembro registrado
13 mensajes
Publicado el 27,julio 2020 - 16:26
Essaie ceci :
STrecipients est une structure
'phone' est une chaîne
FIN

STJSON est une structure
step est une chaîne
sender est une chaîne
name est une chaîne
campaignType est une chaîne
recipientSource est une chaîne
groupId est une chaîne
filename est une chaîne
saveAsModel est un booléen
destination est une chaîne
message est une chaîne
emailText est une chaîne
recipients est un tableau de STrecipients
dlrUrl est une chaîne
responseUrl est une chaîne
sendAt est un tableau de chaines
FIN

sParametres est un STJSON

sParametres.step = null
sParametres.sender = "L.TECH"
sParametres.name = "Ma CAMP"
sParametres.campaignType = "SIMPLE"
sParametres.recipientSource = "CUSTOM"
sParametres.groupId = null
sParametres.filename = null
sParametres.saveAsModel = false
sParametres.destination = "NAT"
sParametres.message = "messages"
sParametres.emailText = null
TableauAjouteLigne(sParametres.recipients)
sParametres.recipients[1].phone = "22506077966"
sParametres.dlrUrl = ""
sParametres.responseUrl = ""
TableauAjouteLigne(sParametres.sendAt)

cMyRequest..Contenu = ChaîneVersUTF8(VariantVersJSON(sParametres))

En espérant que cela te soit utile.
Rudy Nyembo