PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV Mobile 2024 → Messages SOAP utilisant MTOM
Messages SOAP utilisant MTOM
Débuté par Multipass, 07 jan. 2015 13:21 - 5 réponses
Membre enregistré
103 messages
Popularité : +4 (4 votes)
Posté le 07 janvier 2015 - 13:21
Bonjour à tous,

Je recherche des infos dans le cadre du développement d'un client consommateur de Web services utilisant l'optimisation MTOM lors de l'envoi et la réception d'un message.

Pouvez-vous me confirmer si cela est possible avec WDM sous Windows CE ?

Merci !

PS. : Meilleurs vœux pour cette nouvelle année...
Membre enregistré
36 messages
Posté le 05 août 2015 - 15:33
Bonjour,
De mon côté je dois consommer (et aussi exposer) un webservice en utilisant l'optimisation MTOM !
Est-ce possible avec Windev ?
As-tu pu avancer suite à ta demande ?

Merci de ton aide

--
Vanessa
BE CREATIVE
Membre enregistré
103 messages
Popularité : +4 (4 votes)
Posté le 07 août 2015 - 06:53
Bonjour Vanessa,

L'optimisation MTOM faisait partie des spécifications de l'éditeur des WS et comme je ne trouvais rien sur le sujet dans l'aide WD, j'ai fait appel à la communauté...

Alors, 8 mois après le post :

- Est-ce possible avec WinDev ?
je dirais que non, mais j'avoue ne pas avoir creusé de partout (cf. fonctions SOAP)...

- As-tu pu avancer suite à ta demande ?
Les premiers tests de consommation ont été suffisamment rapides (et même très rapide) pour que tout le monde oubli ce paramètre. Le projet a été livré.

A+
Membre enregistré
190 messages
Popularité : +21 (23 votes)
Posté le 09 novembre 2018 - 11:07
Bonjour

avez vous plus d'infos sur l'optimisation MTOM / XOP, d'après la doc windev 23, c'est en standard

voir brochure windev 23 , page 65, paragraphe 'Tout Gérer' , dernière ligne.

j'ai un retour de webservice de colissimo sous cette forme (Méthode Rest via Restenvoie ) :
--uuid:c5414cba-0387-47db-8787-17ed67a93f7b
Content-Type: application/json;charset=UTF-8
Content-Transfer-Encoding: binary
Content-ID: 

{"messages":[{"id":"0","type":"INFOS","messageContent":"La requête a été traitée avec succès","replacementValues":[]}],"labelXmlV2Reponse":null,"labelV2Response":{"parcelNumber":"6A15914903334","parcelNumberPartner":"0059000116A1591490555801250W","pdfUrl":null,"fields":null}}
--uuid:c5414cba-0387-47db-8787-17ed67a93f7b
Content-Type: application/octet-stream
Content-Transfer-Encoding: binary
Content-ID: 


Y a t il des fonctions natives pour extraire les infos ou faut il parcourir et extraire avec des fonctions chaines?

Merci
Posté le 10 novembre 2018 - 06:57
Salut Nicolas,
d'après le code cela semble être du JSON encodé en UTF-8.
regarde donc cette page: https://blogs.pcsoft.fr/fr/extraire-simplement-donnees-json-dont-structure-connue-avance/353/read.awp
ainsi que
https://doc.pcsoft.fr/?3024043
Pour ce qui est de MOTM , vérifie son implémentation auprès du support.
Merci de ton retour.
Membre enregistré
190 messages
Popularité : +21 (23 votes)
Posté le 12 novembre 2018 - 22:00
merci pour ton retour, intéressant le lien vers le blog :merci:

finalement j'ai fait une procédure qui parse ce genre de réponse de webservice , à adapter

Procedure parse_contenu(LOCAL sContenu est chaîne)

pos_content_id, pos_content_type sont des entiers
content_type, content_id, content_data sont des chaînes
taContenu est un tableau associatif de Variants

BOUCLE
pos_content_type = Position(sContenu,"Content-Type:")
SI pos_content_type = 0 ALORS SORTIR
pos_content_id = Position(sContenu,"Content-ID:")
content_type = sContenu[[pos_content_type À Position(sContenu,CR,pos_content_type) - 1]]
content_id = sContenu[[pos_content_id À Position(sContenu,CR,pos_content_id) - 1]]
sContenu = sContenu[[pos_content_id+Taille(content_id) À ]]
content_id = SansEspace(ExtraitChaîne(content_id,2,":"))
content_id = SansCaractère(content_id,"<>")
content_type = ExtraitChaîne(content_type,2,":")
content_data = sContenu[[1 À Position(sContenu,"--uuid")-1]]

SI Contient(content_type,"application/json") ALORS
buf_json est un Buffer = content_data[[Position(content_data,"{") À ]]
taContenu[content_id] = JSONVersVariant(content_data)
SINON
taContenu[content_id] = content_data
FIN
FIN
RENVOYER taContenu


avec cette procèdure, je récupère un tableau associatif de variant

soit taContenu = parse_contenu(cMaReponse..Contenu)
Info(taContenu["jsonInfos"].labelV2Response.parcelNumber)


Cette procédure est à améliorer en fonction d'autres types de réponses

Dommage qu'une fonction de ce genre n'existe pas à ma connaissance.