PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Webservice
Webservice
Débuté par Stéphane, 25 mai 2018 11:48 - 7 réponses
Posté le 25 mai 2018 - 11:48
Bonjour à tous,
Je voudrais simplement écrire une valeur dans un webservice mais cela ne fonctionne pas.
Voici comment je procède :
monTabVar est un tableau de chaînes = ["FABRIC.EM.TAB_RC.DONNEES.VARIABLES_01"]
monTabVal est un tableau de chaînes = ["9397"]

WriteVar est RealTimeData.Write
WriteVarReponse est un RealTimeData.WriteResponse

WriteVar.SessionId = idSession
WriteVar.variableNames.string = monTabVar
WriteVar.variableValues.anyType = monTabVal


WriteVarReponse = RealTimeData.Write(WriteVar)

machaine est une chaîne = "Code : "+WriteVarReponse.results.Result.code

Info(machaine)

Voici un impEcran de mon webservice :



On peux voir sur la variable anytype qu'elle est en dynamique.
Et voici le XML :
POST /realtimedata/realtimedata.asmx HTTP/1.1
Host: localhost
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://WebServicesToolkit.net/SV/RealTimeData/v1.0/Write"

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<MessageHeader xmlns="http://WebServicesToolkit.net/SV/RealTimeData/v1.0/">
<MessageTimeStamp>string</MessageTimeStamp>
<MessageIssuer>string</MessageIssuer>
<Signature>string</Signature>
</MessageHeader>
</soap:Header>
<soap:Body>
<Write xmlns="http://WebServicesToolkit.net/SV/RealTimeData/v1.0/">
<SessionId>string</SessionId>
<variableNames>
<string>string</string>
<string>string</string>
</variableNames>
<variableValues>
<anyType />
<anyType />
</variableValues>
<writeParameters>
<CustomUserName>string</CustomUserName>
</writeParameters>
</Write>
</soap:Body>
</soap:Envelope>


Il me renvoi bien qu'il a écrit dans la variable, mais lorsque je vais voir dans la variable la valeur, il y a :
System.Xml.XmlNode[]

Merci d'avance de votre aide.
Posté le 25 mai 2018 - 14:30
up :)
Posté le 28 mai 2018 - 12:00
Bonjour à tous,
Quelqu'un aurait une petite idée pour me faire avancer sur mon problème ?
Merci d'avance.
Posté le 29 mai 2018 - 10:03
Salut Tous,
Y'a-t-il vraiment personne pour me donner un coup de main ?
Help Me :D
Membre enregistré
179 messages
Popularité : +17 (17 votes)
Posté le 13 juin 2018 - 11:58
Bonjour Stéphane,

Essayez avec cette syntaxe :
monTabVar est un tableau de chaînes = ["FABRIC.EM.TAB_RC.DONNEES.VARIABLES_01"]
monTabVal est un tableau de chaînes = ["9397"]

WriteVar est RealTimeData.Write
WriteVarReponse est un RealTimeData.WriteResponse

WriteVar.SessionId = idSession
WriteVar.variableNames.string = monTabVar
WriteVar.variableValues.anyType[1] = "9397"
WriteVarReponse = RealTimeData.Write(WriteVar)

machaine est une chaîne = "Code : "+WriteVarReponse.results.Result.code

Info(machaine)


Pas dit que ça fonctionne mais je m'en suis parfois sorti avec cette syntaxe pour faire passer des tableaux à un webservice.
Posté le 20 juin 2018 - 11:18
Bonjour Jérôme,
Merci de ta réponse mais sa ne fonctionne pas.
J'ai fais un test avec un logiciel de nom SOAPUI et si je modifie cette balise :
<anyType>21.3</anyType>

en :
<ns1:anyType xsi:type="xsd:string">21.3</ns1:anyType>

Cela fonctionne.
Donc ma question, comment faire pour modifier la balise.
Merci d'avance de vos réponse.
Membre enregistré
179 messages
Popularité : +17 (17 votes)
Posté le 21 juin 2018 - 16:39
J'ai rencontré le même soucis et je m'en suis sorti avec la fonction SOAPAjouteAttribut()

Peut-être comme ceci :

monTabVar est un tableau de chaînes = ["FABRIC.EM.TAB_RC.DONNEES.VARIABLES_01"]
monTabVal est un tableau de chaînes = ["9397"]

WriteVar est RealTimeData.Write
WriteVarReponse est un RealTimeData.WriteResponse

WriteVar.SessionId = idSession
WriteVar.variableNames.string = monTabVar
WriteVar.variableValues.anyType[1] = "9397"
SOAPAjouteAttribut(WriteVar.variableValues.anyType[1],"xsi:type","anyType")
WriteVarReponse = RealTimeData.Write(WriteVar)

machaine est une chaîne = "Code : "+WriteVarReponse.results.Result.code

Info(machaine)


Il faut dans tous les cas regarder ce qui est réellement envoyé au webservice avec les type wsRequête et wsRéponse.
monTabVar est un tableau de chaînes = ["FABRIC.EM.TAB_RC.DONNEES.VARIABLES_01"]
monTabVal est un tableau de chaînes = ["9397"]

WriteVar est RealTimeData.Write
WriteVarReponse est un RealTimeData.WriteResponse

WriteVar.SessionId = idSession
WriteVar.variableNames.string = monTabVar
WriteVar.variableValues.anyType[1] = "9397"
SOAPAjouteAttribut(WriteVar.variableValues.anyType[1],"xsi:type","anyType")
C est un wsRequête
cRep est un wsRéponse
cRep= RealTimeData.Write(C, WriteVar)
Trace(C..SourceXML)
WriteVarReponse = cRep
machaine est une chaîne = "Code : "+WriteVarReponse.results.Result.code

Info(machaine)


ça permet de faire des comparaisons avec SoapUI et de s'en sortir! ;)
Posté le 02 juillet 2018 - 19:06
Salut Jérôme,
Oui avec SOAPAjouteAttribut sa fonctionne parfaitement.

Merci encore pour ton aide.