PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2025 → Webservice la poste
Webservice la poste
Débuté par mpujol, 19 oct. 2015 15:32 - 33 réponses
Posté le 19 octobre 2015 - 15:32
Bonjour à tous ,

J'essaie d'appeler un webservice founi par la poste afin d'editer des etiquettes prepayées , mais je rencontre l'erreur suivante :

"Erreur dans le decodage de la reponse du webservice . La réponse du serveur ne coontient pas de balise enveloppe . Erreur numéro 40055"

Ci desssous mon code :


date est une Date
dateconvert est une chaîne
test2 est une labelResponse
test3 est une generateLabelResponse

date=DateSys()
dateconvert=DateVersChaîne(date,"AAAA-MM-JJ")


Vgenerate est une generateLabel
test4 est une GenerateLabelResponseType
Vgenerate.generateLabelRequest.contractNumber=11111
Vgenerate.generateLabelRequest.password="mdp"
//outputformat
Vgenerate.generateLabelRequest.outputFormat.outputPrintingType="DPL_10x15_300dpi"
//letter
//service
Vgenerate.generateLabelRequest.letter.service.productCode="DOM"
Vgenerate.generateLabelRequest.letter.service.depositDate=dateconvert
Vgenerate.generateLabelRequest.letter.service.commercialName="TEST"

//parcel
Vgenerate.generateLabelRequest.letter.parcel.weight=0.5


//customDECLARATION

//Vgenerate.generateLabelRequest.letter.customsDeclarations.contents.category
Vgenerate.generateLabelRequest.letter.customsDeclarations.contents.category.value=1

//sender -- Paty Maro
Vgenerate.generateLabelRequest.letter.sender.address.companyName="TEST"
//Vgenerate.generateLabelRequest.letter.sender.address.lastName
//Vgenerate.generateLabelRequest.letter.sender.address.firstName
Vgenerate.generateLabelRequest.letter.sender.address.line2="6 rue du test "
Vgenerate.generateLabelRequest.letter.sender.address.countryCode="FR"
Vgenerate.generateLabelRequest.letter.sender.address.city="Villefranche sur mer"
Vgenerate.generateLabelRequest.letter.sender.address.zipCode="06230"
//Vgenerate.generateLabelRequest.letter.sender.address.mobileNumber
Vgenerate.generateLabelRequest.letter.sender.address.email="test@orange.fr"

//adressee

Vgenerate.generateLabelRequest.letter.addressee.address.lastName="test"
Vgenerate.generateLabelRequest.letter.addressee.address.firstName="test"
Vgenerate.generateLabelRequest.letter.addressee.address.line2="test"
Vgenerate.generateLabelRequest.letter.addressee.address.countryCode="FR"
Vgenerate.generateLabelRequest.letter.addressee.address.city="marseille"
Vgenerate.generateLabelRequest.letter.addressee.address.zipCode="06320"
Vgenerate.generateLabelRequest.letter.addressee.address.mobileNumber="0600000000"
Vgenerate.generateLabelRequest.letter.addressee.address.email="test@orange.fr"

//methode GenerateLabel



generateLabel(Vgenerate)

Je dois surement oublier quelque chose quelque part , si vous pouvez m'aider ça serait genial .

Merci d'avance,
Membre enregistré
105 messages
Posté le 20 octobre 2015 - 06:20
Bonjour Mélanie,

Dans un premier temps et lorsque tu consommes le WS, tu n'utilises aucune variable pour récupérer la réponse...
Dans un deuxième temps, il serait judicieux d'avoir l'adresse du wsdl en complément.

A+
Membre enregistré
148 messages
Posté le 20 octobre 2015 - 10:00
Bonjour

"Erreur dans le decodage de la reponse du webservice . La réponse du serveur ne coontient pas de balise enveloppe . Erreur numéro 40055"

Vérifier le contrat de WSDL de votre service, peut être le chemin

Bon dev

--
FETOUI MOHAMED
Consultant et Formateur
fib.fetouimed@gmail.com
https://www.linkedin.com/pub/mohamed-el-fetoui/a0/680/109
MAROC+212(0)661249774
Posté le 20 octobre 2015 - 10:32
Bonjour ,

Merci pour votre réponse .

c'est la première fois que j'utilise des Webservices , du coup je ne sais pas vraiment comment récupérer la réponse ...

ci dessous le lien pour le wsdl avec lequel j'ai importé le webservice :

https://ws.colissimo.fr/sls-ws/SlsServiceWS…

Merci d'avance.
Posté le 20 octobre 2015 - 10:33
bonjour ,

merci pour votre réponse .

Je pense que le chemin est bon puisque j'ai reussi à importer le webservice via la lien founi par la poste .
Membre enregistré
105 messages
Posté le 20 octobre 2015 - 11:19
(re)Bonjour Mélanie,

Le wsdl est plutôt "étoffé"... quelle est la structure (types) à récupérer ?

Selon le cas et par exemple si l'objectif est generateLabelResponse alors tu dois déclarer la variable (comme tu l'as fait) puis l'utiliser lors de la consommation. Typiquement : test3 = generateLabel(Vgenerate)

Tu pourras ensuite parcourir les membres de la structure et récupérer leur valeur...

A+
Posté le 20 octobre 2015 - 16:04
la structure à recuperer est de cette forme :

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ns2:generateLabelResponse xmlns:ns2="http://sls.ws.coliposte.fr">
<return>
<messages>
<id>0</id>
<messageContent>La requête a été traitée avec succès</messageContent>
<type>INFOS</type>
</messages>
<labelResponse>
<label>
<xop:Include href="cid:b7d20d99-e780-4acc-bd01-4d1954654130-31558@cxf.apache.org" xmlns:xop="http://www.w3.org/2004/08/xop/include"/>
</label>
<parcelNumber>6A13136540098</parcelNumber>
</labelResponse>
</return>
</ns2:generateLabelResponse>
</soap:Body>
</soap:Envelope>


Ok j'ai rajouté dans le code :
test3=generateLabel(Vgenerate) mais j'ai toujours le meme message d'erreur .
Membre enregistré
105 messages
Posté le 21 octobre 2015 - 10:03
Tu devrais tester ton wsdl avec le SOA Client de Firefox (ou un utilitaire équivalent)...
Ainsi tu comprendras mieux sa structure et les paramètres attendus/reçus.

A+
Posté le 30 octobre 2015 - 23:24
Salut je travaille sur le même web service.
Après un rapprochement stratégique avec la Poste, j ai appris que le problème venait de leur web service a priori peu compatible avec l'appel direct du webservice en windev. un développement prochain devrait solutionner le problème.

En attendant nous sommes invités a utiliser les appels SOAP UI...

Mais la encore les surprises nous attendent.
je suis en train de faire des tests : retour du serveur : "requête traitée avec succès" et si j'ouvre l'url que le serveur me donne, sur le même serveur donc, réponse du serveur : les arguments ne sont pas valides.....
Posté le 20 novembre 2015 - 11:16
Bonjour,

Il faut utiliser les fonctions SOAP (SAOPExe.).. au lieu d'importer le projet Webservice.
Etant donné que la réponse est un pseudo xml avec xop (transfert fichier joint) il faut parser la réponse du ws
Posté le 02 février 2016 - 02:02
Quelqu'un a réussi a sortir une étiquette colissimo avec Soapexe ou l'import du webservice ? Personnellement avec le webservice importé, j'ai le même code d'erreur et avec soapexecutexml, je n'ai pas de résultat... Quelqu'un a abouti à quelque chose ?
Membre enregistré
841 messages
Posté le 02 février 2016 - 18:07
Pour moi ca fonctionne, j'ai fais ça il y a 3 mois et j'ai bien mes PDF
sCompte est une chaîne="AAAAAA"
sMDP est une chaîne="aaa1234"
gsNumeroDuChargeur est une chaîne="XXXXXXXXXX"

v1 est un generateLabel
v2 est un generateLabelResponse

v1.generateLabelRequest.contractNumber=sCompte
v1.generateLabelRequest.password=sMDP
v1.generateLabelRequest.outputFormat.outputPrintingType="PDF_10x15_300dpi"

v1.generateLabelRequest.letter.service.productCode="DOS"
v1.generateLabelRequest.letter.service.depositDate=DateDuJour()[[1 A 4]]+"-"+DateDuJour()[[5 A 6]]+"-"+DateDuJour()[[7 A 8]]
v1.generateLabelRequest.letter.service.commercialName=gsNumeroDuChargeur

v1.generateLabelRequest.letter.parcel.weight=2.20

v1.generateLabelRequest.letter.sender.address.companyName="AAAAA"
v1.generateLabelRequest.letter.sender.address.line1="Magasin" //31 max
v1.generateLabelRequest.letter.sender.address.line2="32 rue de xxxxxxx" //31 max
v1.generateLabelRequest.letter.sender.address.countryCode="FR" //FR OU BE
v1.generateLabelRequest.letter.sender.address.city="Paris"
v1.generateLabelRequest.letter.sender.address.zipCode="75010"

v1.generateLabelRequest.letter.addressee.address.lastName="HAGGAD"
v1.generateLabelRequest.letter.addressee.address.firstName="Carot"
v1.generateLabelRequest.letter.addressee.address.line1="etage imm etc" //31 max
v1.generateLabelRequest.letter.addressee.address.line2="44 rue de xxxxxx" //31 max
v1.generateLabelRequest.letter.addressee.address.countryCode="FR" //FR OU BE
v1.generateLabelRequest.letter.addressee.address.city="Vincennes"
v1.generateLabelRequest.letter.addressee.address.zipCode="94300"

byBuffer est un Buffer = SOAPPrepare(generateLabel,v1)

SOAPExécuteXML("https://ws.colissimo.fr/sls-ws/SlsServiceWS", byBuffer)
v2=generateLabel(v1)
SI ErreurDétectée = Vrai ALORS
SAI_INFO=ErreurInfo()
SINON
SI v2.return.messages.id>0 ALORS
SAI_INFO=v2.return.messages.messageContent
SINON
SAI_INFO=v2.return.labelResponse.label
FIN
FIN


--
Cordialement,
Camus
Membre enregistré
841 messages
Posté le 03 février 2016 - 13:30
Je reviens sur ce que j'ai dis...

En phase de test cela fonctionne mais j'ai recu mes codes production aujourd'hui et cela ne fonctionne pas !

Erreur dans le décodage de la réponse du Webservice :
La réponse du serveur ne contient pas de balise 'Envelope'.

--
Cordialement,
Camus
Membre enregistré
841 messages
Posté le 04 février 2016 - 10:09
Pour ceux qui veulent travailler sur des étiquettes PDF voici une fonction permettant de contourner le probleme.
Il suffit d'envoyer en parametre la variable GenerateLabel construite et le dossier ou sauvegarder le pdf ....
Testé rapidement uniquement sur les envois à domicile, reste les RDV Points de retrait et les bureaux de poste mais cela ne devrait pas poser de problemes.
Je pense que le code est adaptable pour le ZPL ou le XML.
Bonne journée
FONCTION GenerePdf(pV,pDossier="")
sXml,sPdfUrl,sUrl sont des chaînes
nIdMessage est un entier
sTexteMessage est une chaîne
sParcel est une chaîne
bLabelcreee est un booléen
sDossier est une chaîne

sDossier=ComplèteRep(pDossier)

//Demande au WebService
byBuffer est un Buffer = SOAPPrepare(generateLabel,pV)
SOAPExécuteXML("https://ws.colissimo.fr/sls-ws/SlsServiceWS", byBuffer)
sXml=SOAPDonneRésultat(SOAPRésultatHTTP)
//Parse de la réponse
nIdMessage=XMLExtraitChaîne(XMLExtraitChaîne(sXml,"messages"),"id")
sTexteMessage=XMLExtraitChaîne(XMLExtraitChaîne(sXml,"messages"),"messageContent")
SI nIdMessage>0 ALORS
Erreur(sTexteMessage)
RENVOYER ("",0,nIdMessage,sTexteMessage)
FIN
//Récupération des valeurs renvoyée
sParcel=XMLExtraitChaîne(XMLExtraitChaîne(sXml,"labelResponse"),"parcelNumber")
sPdfUrl=XMLExtraitChaîne(sXml,"pdfUrl")
sUrl=XMLVersTexte(sPdfUrl)

//Ecriture du PDF
bufPDF est un Buffer
HTTPRequête(sUrl)
bufPDF=HTTPDonneRésultat(httpRésultat)
SI PAS fRépertoireExiste(sDossier) ALORS
fRepCrée(sDossier)
FIN
bLabelcreee=fSauveBuffer(sDossier+"eti_poste_temp.pdf",bufPDF)
RENVOYER (sParcel,bLabelcreee,nIdMessage,sTexteMessage)


--
Cordialement,
Camus
Posté le 08 mars 2016 - 17:04
Bonjour,

J'ai testé votre code mais j'obtiens systématiquement l'erreur suivante :

Vous avez appelé la fonction SOAPPrépare.
Aucune opération 'generateLabel' avec 1 paramètre(s) n'a été trouvée.

Avez-vous eu ce problème ?

Cordialement,

Rodolphe
Membre enregistré
841 messages
Posté le 08 mars 2016 - 18:46
Oui mais je ne me souviens plus quand.
Peut etre que les parametres n'ont pas été saisis dans l'ordre chose que la doc n'indique pas

--
Cordialement,
Camus
Posté le 08 mars 2016 - 19:35
Merci pour votre réponse.

J'ai bien suivi l'ordre du wsdl mais j'ai toutjours le même problème.

Pouvez-vous m'envoyer votre code ? Est-ce bien le même que celui que vous avez déposé au-dessus ?

Enfin, la date sous le format "AAAA-MM-JJ" ne passe pas, je suis obligé de contourner le code d'erreur avec une date du type "AAAAMMJJ", avez-vous eu cette modification à faire ou est-ce que mon erreur vient de là ?

Cordialement,

Rodolphe
Membre enregistré
841 messages
Posté le 09 mars 2016 - 08:14
Je vais vous redonner le code. Il fonctionne actuellement en production. Le temps de supprimer les données de notre entreprise.

--
Cordialement,
Camus
Membre enregistré
841 messages
Posté le 09 mars 2016 - 08:23
Voila, j'utilise SumatraPDF pour imprimer l’étiquette Windev n'y arrive pas. Le code était bon, ici il est un peu modifié cela doit donc venir de tes paramètres, je t'envoie la structure que j'utilise un peu plus tard.
Procedure LaPoste_Generepdf(pV,pDossier="")

sXml,sPdfUrl,sUrl sont des chaînes
nIdMessage est un entier
sTexteMessage est une chaîne
sParcel est une chaîne
bLabelcreee est un booléen
sDossier est une chaîne

sDossier=ComplèteRep(pDossier)

//Demande au WebService
byBuffer est un Buffer = SOAPPrepare(generateLabel,pV)
SOAPExécuteXML("https://ws.colissimo.fr/sls-ws/SlsServiceWS", byBuffer)
sXml=SOAPDonneRésultat(SOAPRésultatHTTP)
//Parse de la réponse
nIdMessage=XMLExtraitChaîne(XMLExtraitChaîne(sXml,"messages"),"id")
sTexteMessage=XMLExtraitChaîne(XMLExtraitChaîne(sXml,"messages"),"messageContent")
SI nIdMessage>0 ALORS
Erreur(sTexteMessage)
RENVOYER ("0")
FIN
//Récupération des valeurs renvoyée
sParcel=XMLExtraitChaîne(XMLExtraitChaîne(sXml,"labelResponse"),"parcelNumber")
sPdfUrl=XMLExtraitChaîne(sXml,"pdfUrl")
sUrl=XMLVersTexte(sPdfUrl)
//Ecriture du PDF
bufPDF est un Buffer
HTTPRequête(sUrl)
bufPDF=HTTPDonneRésultat(httpRésultat)
SI PAS fRépertoireExiste(sDossier) ALORS
fRepCrée(sDossier)
FIN
bLabelcreee=fSauveBuffer(sDossier+"eti_poste_temp.pdf",bufPDF)
SI PAS bLabelcreee ALORS
RENVOYER ("0")
FIN
LanceAppli("sumatraPDF.exe -print-to ""Datamax M-4206 Mark II"" """+sDossier+"eti_poste_temp.pdf"" -exit-on-print")
RENVOYER (sParcel)


--
Cordialement,
Camus
Membre enregistré
841 messages
Posté le 09 mars 2016 - 08:27
Voici ce que j'ai mis pour la date... je pense que cela vient de là
v1.generateLabelRequest.letter.service.depositDate=DateDuJour()[[1 A 4]]+"-"+DateDuJour()[[5 A 6]]+"-"+DateDuJour()[[7 A 8]]


--
Cordialement,
Camus
Posté le 09 mars 2016 - 12:12
J'ai toujours le même problème, le webservice refuse la date. Vous avez téléchargé le webservice et utilisez les structures du webservice ou vous avez programmé vos structures en windev ?
Posté le 09 mars 2016 - 12:45
Avec votre format de date, j'obtiens le problème suivant :

La valeur '2016-00-03' ne respecte pas le schéma XSD.

Il transforme systématiquement '2016-08-03' en '2016-00-03'. Il met 00 à la place du mois et je pense que c'est pour cela que la date n'est pas reconnue.
J'ai essayé avec "2016-11-03" et j'obtiens le code d'erreur :

La valeur '2016-255-01' ne respecte pas le schéma XSD.

Je n'y comprends pas grand chose...
Membre enregistré
841 messages
Posté le 09 mars 2016 - 15:10
Il y a forcement quelque chose de modifié par rapport a ce que j'ai donné parce que sinon on aurait eu la date d'aujourd'hui
pouvez vous m'envoyer votre ligne pour la date et me dire d'ou provient la date parce qu'il n'y a aucune raison que cela fonction chez moi et pas chez vous

--
Cordialement,
Camus
Membre enregistré
841 messages
Posté le 09 mars 2016 - 15:19
Voici mon code... les données viennent d'une bdd HFSQL mais c'est quand meme comprehensible
sCompte est une chaîne="<CODE CLIENT>"
sMDP est une chaîne="<PASSE CLIENT>"
sColissimo est une chaîne
bRelais est un booléen=Faux
sNumeroDePortable est une chaîne
sAdresse est une chaîne
sLine0,sLine1,sLine2 sont des chaînes
sCP,sVille,sMail sont des chaîne
sCountryCode est une chaîne = "FR"
nNbRc est un entier
sNomPrenom,sNom,sPrenom est une chaîne
bChouka est un booléen
sSuivi est une chaîne
sFichierArchive est une chaîne
sRegion est une chaîne
sSoColissimo est une chaîne
sClient_Adresse est une chaîne


v1 est un generateLabel



HLitRecherche(EXPEDIER,NUM,pNumExpe)
SI PAS HTrouve(EXPEDIER) ALORS
Info("L’expédition n'existe pas")
RENVOYER("0")
FIN
sRegion=EXPEDIER.region
sSoColissimo=Remplace(EXPEDIER.socolissimo,"<BR>",RC)
bChouka=(EXPEDIER.CHOUKA=Vrai)
sNomPrenom=(SansAccent(EXPEDIER.NOM))
sClient_Adresse = Remplace(Remplace(EXPEDIER.ADRESSE,"<BR>",RC),"<br>",RC)
nNbRc=ChaîneOccurrence(sNomPrenom," ")
SI nNbRc > 0 ALORS
sNom=LaPoste_nettoie_caract_speciaux(ExtraitChaîne(sNomPrenom,1," "))
sPrenom=LaPoste_nettoie_caract_speciaux(sNomPrenom[[Position(sNomPrenom," ") A]])
SINON
sNom = LaPoste_nettoie_caract_speciaux(sNomPrenom)
sPrenom=LaPoste_nettoie_caract_speciaux(sNomPrenom)
FIN
sAdresse = SansAccent(Remplace(EXPEDIER.ADRESSE,Caract(10),""))
nNbRc=ChaîneOccurrence(sAdresse,Caract(13))
sLine2=LaPoste_nettoie_caract_speciaux(ExtraitChaîne(sAdresse,1,Caract(13)))
SI sLine2=EOT ALORS sLine2=""
SI nNbRc > 0 ALORS
sLine0=LaPoste_nettoie_caract_speciaux(ExtraitChaîne(sAdresse,2,Caract(13)))
SI sLine0=EOT ALORS sLine0=""
SI nNbRc > 1 ALORS
sLine1=LaPoste_nettoie_caract_speciaux(ExtraitChaîne(sAdresse,3,Caract(13)))
SI sLine1=EOT ALORS sLine1=""
FIN
FIN

sCP=SansEspace(EXPEDIER.CP)
SI sCP[[1 A 2]]="99" OU sCP[[1 A 2]]="98" ALORS
sCountryCode="MC"
FIN
sVille=SansEspace(EXPEDIER.VILLE)
sMail = SansEspace(EXPEDIER.MAIL)
SI Taille(sMail)=0 ALORS
sMail="courrier@adepem.com"
FIN
SI EXPEDIER.region="BEDOM" ALORS
sCountryCode="BE"
FIN
SI EXPEDIER.region="SO_RELAIS" ALORS
sColissimo=EXPEDIER.socolissimo
bRelais=Vrai
sNumeroDePortable=EXPEDIER.COORD1
FIN



v1.generateLabelRequest.contractNumber=sCompte
v1.generateLabelRequest.password=sMDP
//v1.generateLabelRequest.outputFormat.x=3
v1.generateLabelRequest.outputFormat.y=3
v1.generateLabelRequest.outputFormat.outputPrintingType="PDF_10x15_300dpi"
v1.generateLabelRequest.letter.service.productCode="DOS"
SI bRelais ALORS
v1.generateLabelRequest.letter.service.productCode=ExtraitChaîne(sColissimo,2,"||")
FIN

v1.generateLabelRequest.letter.service.depositDate=DateDuJour()[[1 A 4]]+"-"+DateDuJour()[[5 A 6]]+"-"+DateDuJour()[[7 A 8]]
v1.generateLabelRequest.letter.service.commercialName=gsNumeroDuChargeur

v1.generateLabelRequest.letter.parcel.weight=pPoid
SI pBnc ALORS
//A VERIFIER
v1.generateLabelRequest.letter.parcel.nonMachinable=1
FIN

SI bRelais ALORS
v1.generateLabelRequest.letter.parcel.pickupLocationId=ExtraitChaîne(sColissimo,3,"||")
FIN
//donnee client
v1.generateLabelRequest.letter.sender.address.companyName="<NOM CLIENT>"
v1.generateLabelRequest.letter.sender.address.line1="Magasin" //31 max
v1.generateLabelRequest.letter.sender.address.line2="<ADRESSE CLIENT>" //31 max
v1.generateLabelRequest.letter.sender.address.countryCode="FR"
v1.generateLabelRequest.letter.sender.address.city="<VILLE CLIENT>"
v1.generateLabelRequest.letter.sender.address.zipCode="<CP CLIENT>"
finclient
sFichierArchive = "ARCHIVECOLIS"
v1.generateLabelRequest.letter.addressee.address.lastName=sNom
v1.generateLabelRequest.letter.addressee.address.firstName=sPrenom
SI sLine0 <> "" ALORS
v1.generateLabelRequest.letter.addressee.address.line0=sLine0[[1 A 35]]
FIN
SI sLine1 <> "" ALORS
v1.generateLabelRequest.letter.addressee.address.line1=sLine1[[1 A 35]]
FIN
SI sLine2 <> "" ALORS
v1.generateLabelRequest.letter.addressee.address.line2=sLine2[[1 A 35]]
FIN
v1.generateLabelRequest.letter.addressee.address.countryCode=sCountryCode
v1.generateLabelRequest.letter.addressee.address.city=sVille
v1.generateLabelRequest.letter.addressee.address.zipCode=sCP
SI bRelais ALORS
v1.generateLabelRequest.letter.addressee.address.mobileNumber=Remplace(sNumeroDePortable,".","")
FIN
v1.generateLabelRequest.letter.addressee.address.email=sMail

sSuivi=LaPoste_Generepdf(v1,"C:\ETIQ_POSTE")
SI sSuivi <>"0" ALORS
archiver(sFichierArchive,sNomPrenom,sClient_Adresse,sCP,pPoid,pNumExpe,sSuivi,"FR",pBnc,sRegion,sSoColissimo,"",Vrai)
FIN
RENVOYER(sSuivi)


--
Cordialement,
Camus
Membre enregistré
841 messages
Posté le 09 mars 2016 - 15:21
il manque les 2 slash au début de finclient c'est un commentaire donc remplacer par
//donnee client
v1.generateLabelRequest.letter.sender.address.companyName="<NOM CLIENT>"
v1.generateLabelRequest.letter.sender.address.line1="Magasin" //31 max
v1.generateLabelRequest.letter.sender.address.line2="<ADRESSE CLIENT>" //31 max
v1.generateLabelRequest.letter.sender.address.countryCode="FR"
v1.generateLabelRequest.letter.sender.address.city="<VILLE CLIENT>"
v1.generateLabelRequest.letter.sender.address.zipCode="<CP CLIENT>"
//finclient


--
Cordialement,
Camus
Posté le 09 mars 2016 - 16:06
J'ai importé le webservice via l'outil soap de windev 16.

Voici mon code, en l'état il plante au niveau de la date, si je tape manuellement la date "20160309", je vais jusqu'à SOAPprepare et là j'ai une erreur sur generatelabel inconnu avec un argument.

etiquetteColissimo est un generateLabel
etiquetteColissimo.generateLabelRequest.contractNumber="******"
etiquetteColissimo.generateLabelRequest.password="******"

etiquetteColissimo.generateLabelRequest.outputFormat.x=3
etiquetteColissimo.generateLabelRequest.outputFormat.y=3
etiquetteColissimo.generateLabelRequest.outputFormat.outputPrintingType="PDF_10x15_300dpi"

etiquetteColissimo.generateLabelRequest.letter.service.productCode="DOS"
etiquetteColissimo.generateLabelRequest.letter.service.depositDate=DateDuJour()[[1 A 4]]+"-"+DateDuJour()[[5 A 6]]+"-"+DateDuJour()[[7 A 8]]
etiquetteColissimo.generateLabelRequest.letter.service.commercialName="TEST"

etiquetteColissimo.generateLabelRequest.letter.parcel.weight=5.2

etiquetteColissimo.generateLabelRequest.letter.sender.address.companyName="*****"
etiquetteColissimo.generateLabelRequest.letter.sender.address.line1="******"
etiquetteColissimo.generateLabelRequest.letter.sender.address.line2="*****"
etiquetteColissimo.generateLabelRequest.letter.sender.address.countryCode="FR"
etiquetteColissimo.generateLabelRequest.letter.sender.address.city="*****"
etiquetteColissimo.generateLabelRequest.letter.sender.address.zipCode="*****"

etiquetteColissimo.generateLabelRequest.letter.addressee.address.lastName="*****"
etiquetteColissimo.generateLabelRequest.letter.addressee.address.firstName="*****"
etiquetteColissimo.generateLabelRequest.letter.addressee.address.line1="*****"
etiquetteColissimo.generateLabelRequest.letter.addressee.address.line2="*****"
etiquetteColissimo.generateLabelRequest.letter.addressee.address.countryCode="FR"
etiquetteColissimo.generateLabelRequest.letter.addressee.address.city="*****"
etiquetteColissimo.generateLabelRequest.letter.addressee.address.zipCode="*****"

byBuffer est un Buffer = SOAPPrepare(generateLabel,etiquetteColissimo)
SOAPExécuteXML("https://ws.colissimo.fr/sls-ws/SlsServiceWS?wsdl", byBuffer)
sXml est une chaîne=SOAPDonneRésultat(SOAPRésultatHTTP)
//Parse de la réponse
nIdMessage est un entier=XMLExtraitChaîne(XMLExtraitChaîne(sXml,"messages"),"id")
sTexteMessage est une chaîne=XMLExtraitChaîne(XMLExtraitChaîne(sXml,"messages"),"messageContent")
Info(sTexteMessage)
Posté le 12 mars 2016 - 03:51
Pour moi, le problème venait du fait que j'utilisais windev 16, avec windev 19, ça fonctionne sans problème.
Membre enregistré
841 messages
Posté le 13 mars 2016 - 10:51
Pour l'instant je suis a 20 je n'installe les nouvelles versions qu'a la première mise a jour donc demain

--
Cordialement,
Camus
Posté le 15 mars 2016 - 18:43
Un grand merci !!
rien à ajouter
Posté le 17 mars 2016 - 15:31
Bonjour,

je pensais bien m'en être sortie mais voilà que je suis bloquée pour l'impression automatique :
je n'arrive pas à imprimer sur mon imprimante étiquettes sans qu'elle soit définie "imprimante par défaut"

L'imprimante par défaut doit rester l'imprimante A4 et je veux imprimer sur ma TSC les étiquettes.
WinDev ne veut pas modifier temporairement cette imprimante :

scheminFichier est une chaîne = "C:\EtiqPoste\"
sFichier est une chaîne = "eti_poste_temp.pdf"
sImp est une chaîne = gsValParam("IMP_ZEBRAWEB",gnNumMag,gnNumPoste,"ZEBRA_WEB")
iConfigure(sImp,Vrai)
LanceAppliAssociée( scheminFichier+sFichier,"print")

et malgré tout l'imprimante par défaut reste celle de Windows

impossible d'installer Sumatra sur les postes en exploitation car trop de postes

help !
Posté le 17 mars 2016 - 16:24
Pour info mon problème d'impression semble résolu :-)
pour ceux que ça peut intéresser :

ImprimanteDéfaut est une chaîne = iInfoImprimante(Faux)

//configure l'imprimante désirée, qui n'est pas celle par défaut
bImpressionAuto est un booléen = Oui
SI PAS iConfigure(sImp,Faux) ALORS
bImpressionAuto = Faux
SI EnModeTest() ALORS
Info("Info de config de l'imprimante etiquette colis"+sImp)
SINON
Erreur("erreur de config de l'imprimante etiquette colis"+sImp)
FIN
FIN


ExeTermine("AcroRd32.exe")
ExeTermine("Acrobat.exe")
SI bImpressionAuto ALORS
LanceAppliAssociée( sCheminFichier+sFichier,"print")
SINON
LanceAppliAssociée( sCheminFichier+sFichier)
FIN

//remet l'imprimante par défaut
iConfigure(ImprimanteDéfaut,Faux)
Membre enregistré
841 messages
Posté le 17 mars 2016 - 17:02
Bonjour,

L'avantage de SumatraPDF.exe par rapport à acrobat c'est qu'on peut imprimer sur l'imprimante qu'on veut... ici sur une Datamax M-4206 Mark II

LanceAppli("sumatraPDF.exe -print-to ""Datamax M-4206 Mark II"" """+sDossier+"eti_poste_temp.pdf"" -exit-on-print")

--
Cordialement,
Camus
Posté le 29 juillet 2016 - 14:45
Bonjour

merci pour vos reponses.
j'arrive à generer une etiquette en pdf mais pas en DPL .
( d'après le service technique la poste sur datamax il vaut mieux utiliser du DPL) .
j'ai egalement essayé d'imprimer du pdf sur la datamax mais rien ne sors meme avec SumatraPDF.exe

LanceAppli("sumatraPDF.exe -print-to ""Datamax-O'Neil E-Class MarkIII"" """+sDossier+"eti_poste_temp.pdf"" -exit-on-print")

Merci d'avance,
Posté le 13 avril 2018 - 09:54
Bonjour,

Voici mon code pour récupérer l'étiquette. (Ne fonctionne qu'avec un seul fichier attaché) je vais faire des tests avec un CN23

J'espère qu'il servira

Bon Dev !

//Préparation de la requète
byBuffer est un Buffer = SOAPPrépare(generateLabel,MaDemande)

//Execution de la requète
SOAPExécuteXML("https://ws.colissimo.fr/sls-ws/SlsServiceWS", byBuffer)

//Récupération du résultat
sXml est un Buffer = SOAPDonneRésultat(SOAPRésultatXML)

sCIDPdf est un Buffer
sParcel est un chaîne

//Récuperation du n° de colis
sParcel=XMLExtraitChaîne(XMLExtraitChaîne(sXml,"labelResponse"),"parcelNumber")

//Récupération de la zone contenant le CID de la pièce jointe
sCIDPdf=XMLExtraitChaîne(sXml,"label")
// Exemple : sCIDPdf =

//Extraction du CID de la zone :
sMoncid est une chaîne
sMoncid = Milieu(sCIDPdf,Position(sCIDPdf,"href=""",0)+6,((Position(sCIDPdf,"""/>",0)-Position(sCIDPdf,"href=""",0))-6))
// Exemple : sMoncid = cid:be253c20-243f-4d8d-9ca1-d3bcb371d7c2-59131@cxf.apache.org

//On supprime le cid:
sMoncid=Remplace(sMoncid,"cid:","")

//Extraction de la pièce jointe à partir de la position de fin du cid (+4 pour ne pas prendre les 2 rc)
bufMonPdf est un Buffer= Milieu(sXml,Position(sXml,"Content-ID: <"+sMoncid+">",0)+Taille("Content-ID: <"+sMoncid+">")+4,Taille(sXml))

//Sauvegarde du pdf (numerodecolis.pdf)
fSauveTexte("c:\monrep\"+sParcel+".pdf",bufMonPdf)