Delphi 2007 ne génère pas le fichier XML que je veux envoyer à mon service Web Java-WS

StackOverflow https://stackoverflow.com/questions/597196

  •  11-09-2019
  •  | 
  •  

Question

J'ai un service Web Java auquel je suis lié d'une application Delphi 2007 en utilisant l'importateur WSDL. Sa mise en place a été chemin rocailleux mais je « m presque!

J'ai maintenant la situation dans laquelle mes tableaux ne sont pas en cours de sérialisation d'une manière que mon service Java Web peut consommer. J'ai écrit la même application en .Net pour le tester (il fonctionne très bien) et le XML Je cherche à générer ressemble à ceci: -

<?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:NS2="http://path.to.service">
        <NS1:addActivities xmlns:NS1="http://path.to.service/">
            <login href="#1"/>
            <project xsi:type="xsd:string">PROJ001</project>
            <activities>
                <id xsi:type="xsd:string">DELPHITEST</id>
                <name xsi:type="xsd:string">This is a test</name>
            </activities>
            <activities>
                <id xsi:type="xsd:string">DELPHITEST2</id>
                <name xsi:type="xsd:string">This is another test</name>
            </activities>
        </NS1:addActivities>
        <NS2:login id="1" xsi:type="NS2:login">
            <database xsi:type="xsd:string">My_database</database>
            <password xsi:type="xsd:string">neverUmind</password>
            <username xsi:type="xsd:string">bob</username>
        </NS2:login>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Cependant, le XML Delphi génère est la suivante: -

<?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:NS2="http://path.to.service/">
        <NS1:addActivities xmlns:NS1="http://path.to.service/">
            <login href="#1"/>
            <project xsi:type="xsd:string">PROJ001</project>
            <activities xsi:type="SOAP-ENC:Array" 
                    SOAP-ENC:arrayType="NS2:activity[2]">
                <item href="#2"/>
                <item href="#3"/>
            </activities>
        </NS1:addActivities>
        <NS2:login id="1" xsi:type="NS2:login">
            <database xsi:type="xsd:string">My_database</database>
            <password xsi:type="xsd:string">neverUmind</password>
            <username xsi:type="xsd:string">bob</username>
        </NS2:login>
        <NS2:activity id="2" xsi:type="NS2:activity">
            <id xsi:type="xsd:string">DELPHITEST</id>
            <name xsi:type="xsd:string">This is a test</name>
        </NS2:activity>
        <NS2:activity id="3" xsi:type="NS2:activity">
            <id xsi:type="xsd:string">DELPHITEST2</id>
            <name xsi:type="xsd:string">This is another test</name>
        </NS2:activity>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

En fait, je dois Delphi pour cesser de créer activité éléments dans l'élément activités et au lieu simplement mettre chaque ID et le nom dans l'élément d'activités (comme .Net fait et Java semble attendre).

J'ai enculer au sujet des InvRegistry.RegisterInvokeOptions et les RemClassRegistry.RegisterSerializeOptions mais aucune des combinaisons semble fonctionner. Pour être honnête, je suis sur le point de ecris mon propre analyseur XML pour ce que cela prend moyen de temps à comprendre. Cependant, si quelqu'un a des suggestions sur la façon dont cela devrait fonctionner, je serais très reconnaissant.

Sûrement quelqu'un en doit y avoir consommé un service Web Java-WS via Delphi 2007 avant:)

TIA

Était-ce utile?

La solution

Il semble que le composant XMLDocument en Delphi 2007 est cassé. J'ai installé le composant alcinoé au lieu et fonctionne un charme. Ce fut une semaine perdue ... grrrr

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top