Delphi 2007 non sta generando il codice XML che voglio inviare al mio servizio Web Java-WS

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

  •  11-09-2019
  •  | 
  •  

Domanda

Ho un servizio Web Java a cui ho collegato da un 2007 app Delphi utilizzando l'importatore WSDL. La sua creazione è stato un strada rocciosa ma io 'm quasi!

Ora ho la situazione in cui le mie matrici non vengono serializzati in modo che il mio servizio Web Java può consumare. Ho scritto la stessa applicazione in .Net di provarlo (funziona benissimo) e l'XML che sto cercando di generare aspetto: -

<?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>

Tuttavia, l'XML che Delphi genera è la seguente: -

<?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>

In sostanza, ho bisogno di Delphi per smettere di creare attività elementi all'interno attività e invece appena messo ogni ID e nome all'interno di un elemento attività (come fa .Net e Java sembra aspettarsi).

Non ho sodomizzato in giro con i InvRegistry.RegisterInvokeOptions ei RemClassRegistry.RegisterSerializeOptions ma nessuna delle combinazioni sembrano funzionare. Ad essere onesti io sono sul punto di scrittura mia parser XML per questo, come sta prendendo modo di tempo per capire. Tuttavia, se qualcuno ha qualche suggerimento su come questo dovrebbe funzionare sarei molto grato.

Sicuramente qualcuno là fuori deve aver consumato un servizio Web Java-WS via Delphi 2007 prima:)

TIA

È stato utile?

Soluzione

Sembra che il componente XMLDocument in Delphi 2007 è rotto. Ho installato il componente alcinoe invece e che funziona un fascino. Questo è stato solo una settimana sprecato ... grrrr

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top