ho risolto o perlomeno ho trovato una soluzione accettabile
per prima cosa ho cambiato il modo di referenziare il web service
prima d awisual studio 2008 facevo "Aggiungi riferimento al servizio"
ora da "Aggiungi riferimento al servizio" seleziono avanzate
e poi "Aggiungi riferimento Web"
praticamente apre l'interfaccia vecchia , quella di visual studio 2005
il risultato è lo stesso di quelloo che si ha se si usa wsdl.exe (avevo provato anche in quel modo)
or a con il ws referenziato in quel modo
quando chiamo quel metodo non và in errore
ma viene restituita la classe in output con tutte le proprietà presenti ma a nothing
mentre il ws restituisce i campi valorizzzati
allora ho provato a fare io un ws e ho fatto una funzione che restituisce la stessa classe
che restituisce il ws java (ho copiato la clase di output che mi genera visual studio quando referenzio il ws)
e ho visto che il mio servizio a differenza del ws java ripete il namespace all'interno di tutte le proprietà della classe in output
il ws java risponde così
il mioCodice PHP:- <UtenteResponseDTO xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="xxxxxx">
<codiceFiscale >sssss</codiceFiscale>
<cognome xsi:nil="true" />
<dataNascita xsi:nil="true" />
<descizioneEsito xsi:nil="true" />
<esito >0</esito>
<idTransazione >0</idTransazione>
<inseritoOnLine >false</inseritoOnLine>
<luogoNascita xsi:nil="true" />
<luogoResidenza xsi:nil="true" />
<naturaGiuridica xsi:nil="true" />
<nazionalita xsi:nil="true" />
<nome xsi:nil="true" />
<partitaIVA xsi:nil="true" />
<posizioneIVA xsi:nil="true" />
<provinciaNascita xsi:nil="true" />
<provinciaResidenza xsi:nil="true" />
<provinciaResidenzaCod xsi:nil="true" />
<sesso xsi:nil="true" />
<viaResidenza xsi:nil="true" />
</UtenteResponseDTO>
allora overriddando la sub ProcessMessage di SoapExtensionCodice PHP:- <UtenteResponseDTO xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="xxxx">
<codiceFiscale xmlns="http://MioNamespace.it">sssss</codiceFiscale>
<cognome xsi:nil="true" xmlns="http://MioNamespace.it" />
<dataNascita xsi:nil="true" xmlns="http://MioNamespace.it" />
<descizioneEsito xsi:nil="true" xmlns="http://MioNamespace.it" />
<esito xmlns="http://MioNamespace.it">0</esito>
<idTransazione xmlns="http://MioNamespace.it">0</idTransazione>
<inseritoOnLine xmlns="http://MioNamespace.it">false</inseritoOnLine>
<luogoNascita xsi:nil="true" xmlns="http://MioNamespace.it" />
<luogoResidenza xsi:nil="true" xmlns="http://MioNamespace.it" />
<naturaGiuridica xsi:nil="true" xmlns="http://MioNamespace.it" />
<nazionalita xsi:nil="true" xmlns="http://MioNamespace.it" />
<nome xsi:nil="true" xmlns="http://MioNamespace.it" />
<partitaIVA xsi:nil="true" xmlns="http://MioNamespace.it" />
<posizioneIVA xsi:nil="true" xmlns="http://MioNamespace.it" />
<provinciaNascita xsi:nil="true" xmlns="http://MioNamespace.it" />
<provinciaResidenza xsi:nil="true" xmlns="http://MioNamespace.it" />
<provinciaResidenzaCod xsi:nil="true" xmlns="http://MioNamespace.it" />
<sesso xsi:nil="true" xmlns="http://MioNamespace.it" />
<viaResidenza xsi:nil="true" xmlns="http://MioNamespace.it" />
</UtenteResponseDTO>
ho provatpo a modificare l'xml restituitomi prima di processarlo
e appunto aggiungendo il namespace nei singoli campi venivano letti
allora ho visto che nel reference.vb
che èuno dei file generati da visual studio quando referenzio il ws
(quello che contiene tral'altro le classi pubblicate dal ws)
per la classe in output
c'èra scritto
allora ho toltoCodice PHP:<System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "2.0.50727.4016"), _
System.SerializableAttribute(), _
System.Diagnostics.DebuggerStepThroughAttribute(), _
System.ComponentModel.DesignerCategoryAttribute("code"), _
System.Xml.Serialization.XmlTypeAttribute([Namespace]:="http://MioNamespace.it")> _
Partial Public Class UtenteResponseDTO
.
.
.
.
e senza dover manipolare l'xml (ho tolto la parte che overriddava)Codice PHP:System.Xml.Serialization.XmlTypeAttribute([Namespace]:="http://MioNamespace.it")
funziona corretatmente

Rispondi quotando