Je suis en train d'utiliser webservice Java et ont demande de savon:Comment modifier la sérialisation SOAP TXSDateTime dans Delphi 7?
<?xml version="1.0"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body xmlns:NS1="http://something/">
<NS1:getRequest id="1">
<sessionId xsi:type="xsd:string"></sessionId>
<reportType xsi:type="NS1:reportType">ALL</reportType>
<xsd:dateFrom xsi:type="xsd:dateTime">2010-05-30T23:29:43.088+02:00</xsd:dateFrom>
<xsd:dateTo xsi:type="xsd:dateTime">2010-05-31T23:29:43.728+02:00</xsd:dateTo>
</NS1:getRequest>
<parameters href="#1" />
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Il ne fonctionne pas, parce que webservice ne reconnaît pas les dates en tant que paramètres. Quand je change
<xsd:dateFrom xsi:type="xsd:dateTime">2010-05-30T23:29:43.088+02:00</xsd:dateFrom>
<xsd:dateTo xsi:type="xsd:dateTime">2010-05-31T23:29:43.728+02:00</xsd:dateTo>
à
<dateFrom xsi:type="xsd:dateTime">2010-05-30T23:29:43.088+02:00</xsd:dateFrom>
<dateTo xsi:type="xsd:dateTime">2010-05-31T23:29:43.728+02:00</xsd:dateTo>
tout fonctionne bien, mais Delphi (sans modification Delphi code source) ne permet pas de changer XML généré, il n'a que quelques options. Est-il possible de définir des options de conversion, donc TSXDateTime
est converti en <dateFrom
, pas <xsd:dateFrom
tag? Avez-vous rencontré ce problème?
Où? Ce n'est pas possible. J'ai écrit à ce sujet en question. THTTPRIO a l'événement OnBeforeExecute et il a même un paramètre avec xml déclaré comme var, mais il n'est toujours pas modifiable. Si vous regardez les sources Delphi, il y a même des notes à ce sujet. – LukLed
Désolé, mais OnAfterExecute se produit après l'exécution de la méthode, il n'y a donc rien à changer. OnAfterExecute contient xml de réponse et je veux changer de demande. – LukLed
@LukLed - désolé à ce sujet. Voir ma dernière addition, pour l'utilisation de BeforeExecute pour éditer le XML. Cela peut ne pas fonctionner dans D7, mais est disponible dans D2005 et plus tard. Vous pourrez peut-être modifier la source pour autoriser la modification de cette chaîne/flux. –