PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2024 → Import WSDL buggué
Import WSDL buggué
Iniciado por rbruyere, 25,mar. 2024 15:06 - 7 respuestas
Miembro registrado
6 mensajes
Publicado el 25,marzo 2024 - 15:06
Bonjour,

J'utilise l'API d'un fournisseur. Elle est très bien documentée et j'utilise un WSDL pour avoir accès aux types et aux fonctions. Tout se passe bien jusqu'à l'étape 2 dans laquelle je dois envoyer un ArrayOfIncoiceRequest. Le problème est que le dans la description du webservice importé, je vois que Windev considère que ArrayOfInvoiceRequest ne peut contenir qu'une seule facture (image 1) alors que c'est évidemment faux. Quand je vais voir sur un éditeur de WSDL en ligne, il me dit en effet que l'ArrayOfInvoiceRequest peut contenir de 0 à unbound factures (image 2)










Dans la documentation, il y a un exemple en C# dans lequel il font juste une Liste d'InvoiceRequest qu'ils castent avec ToArray et le mettent dans la structure (image 3) mais cela ne fonctionne pas en Windev (images 4 et 5) avec les méthodes que j'ai essayé.













Auriez vous une idée de comment contourner le problème ? J'ai pensé à modifier la description WSDL pour qu'elle fonctionne avec Windev mais je en sais pas si cela est faisable. Ou alors à tout écrire en XML pour envoyer les requêtes en XML mais ça serait beaucoup de travail si une solution simple existe. Est-ce que je rate quelque chose d'évident ?

Merci pour votre aide et bonne journée !
Miembro registrado
950 mensajes
Popularité : +53 (63 votes)
Publicado el 25,marzo 2024 - 15:26
Bonjour,

Montre nous ton code WL stp

Ndrj
Miembro registrado
6 mensajes
Publicado el 25,marzo 2024 - 16:52
Voilà mon code, c'est vraiment basique c'est pourquoi j'ai l'impression que ça se passe au niveau de l'import du WSDL. J'ai déjà fait d'autres requêtes et toutes les variables simples fonctionnent sans soucis. C'est donc la dernière ligne (68) qui part en erreur avec les messages que j'ai mis au dessus.



Miembro registrado
950 mensajes
Popularité : +53 (63 votes)
Publicado el 25,marzo 2024 - 17:14
Au lieu de faire tabFactureOuverts.Ajoute(NouvFacture), tu peux faire ajoute(Requete2.invoiceListe,NouveFacture) ?

Il faut que tu déclare requete2 est un RequestStep2 avant ta boucle Tantque par contre
Miembro registrado
6 mensajes
Publicado el 26,marzo 2024 - 08:33
Je vidais mon tableau plus bas mais en effet c'est plus propre de recréer un nouveau tableau (pas certains que ce soit plus rapide ni plus économe en mémoire en fait)

Mais cela ne résout pas le problème, il me dit toujours que l'élément InvoicesList n'est pas indicé.




Miembro registrado
950 mensajes
Popularité : +53 (63 votes)
Publicado el 26,marzo 2024 - 09:09
Bonjour,

Si tu fais
Ajoute(Requete2.invoiceList.InvoiceRequest,NouveFacture)

Ca donne quoi ?
Ndrj
Publicado el 26,marzo 2024 - 09:35
rbruyere avait énoncé :
Bonjour,

J'utilise l'API d'un fournisseur. Elle est très bien documentée et j'utilise
un WSDL pour avoir accès aux types et aux fonctions. Tout se passe bien
jusqu'à l'étape 2 dans laquelle je dois envoyer un ArrayOfIncoiceRequest. Le
problème est que le dans la description du webservice importé, je vois que
Windev considère que ArrayOfInvoiceRequest ne peut contenir qu'une seule
facture (image 1) alors que c'est évidemment faux. Quand je vais voir sur un
éditeur de WSDL en ligne, il me dit en effet que l'ArrayOfInvoiceRequest peut
contenir de 0 à unbound factures (image 2)










Dans la documentation, il y a un exemple en C# dans lequel il font juste une
Liste d'InvoiceRequest qu'ils castent avec ToArray et le mettent dans la
structure (image 3) mais cela ne fonctionne pas en Windev (images 4 et 5)
avec les méthodes que j'ai essayé.













Auriez vous une idée de comment contourner le problème ? J'ai pensé à
modifier la description WSDL pour qu'elle fonctionne avec Windev mais je en
sais pas si cela est faisable. Ou alors à tout écrire en XML pour envoyer les
requêtes en XML mais ça serait beaucoup de travail si une solution simple
existe. Est-ce que je rate quelque chose d'évident ?

Merci pour votre aide et bonne journée !


bonjour,

est ce que cela fonctionne comme ceci ?

requete2.InvoicesList[1].InvoiceRequest.InvoiceNumber = xxxx
....
...
requete2.InvoicesList[2].InvoiceRequest.InvoiceNumber = xxxx
....
...

--
Cordialement JeAn-PhI
Miembro registrado
6 mensajes
Publicado el 26,marzo 2024 - 10:29
Ndrj a écrit :
Bonjour,

Si tu fais
Ajoute(Requete2.invoiceList.InvoiceRequest,NouveFacture)

Ca donne quoi ?
Ndrj


En effet comme cela ça fonctionne ! Merci beaucoup pour l'aide et désolé de vous avoir dérangé pour un problème si bête.

Cordialement, rbruyere