Salve a tutti
sono alle prese con lo sviluppo in vb.net di un’applicazione in ambiente di interoperabilità (web service) con il ministero delle politiche agricole (il mipaf).
L’applicazione deve aggiornare i dati relativi al Registro di carico e scarico vitivinicolo di un’azienda vitivinicola.
Lo scenario del problema e' il seguente :
il mipaf , mi ha fornito :



Nel progetto vb.net, ho aggiunto un servizio connesso all’indirizzo :

https://registri.sian.it/wsTOAST/ser...VinoAsync?wsdl

vb.net mi ha generato tutte le classi e mi ha esposto tutti i servizi.
ho creato un form “soggetti” per richiamare uno dei servizi descritti dal wsdl, in particolare “SoggSiRPVInput per aggiungere l’anagrafica di un soggetto.



Ecco il codice

1 Public Class Soggetti
2 Private Sub BtInvia_Click(sender As Object, e As EventArgs) Handles BtInvia.Click
3 Dim R1 As New RegVinoAsync.wsRegVinoAsyncInterServiceClient
4 Dim Servizio As New RegVinoAsync.SoggSiRPVInput
5 Dim CUUA As New RegVinoAsync.CUAA
6 Dim Richiesta As New RegVinoAsync.SoggSiRPVRequest
7 Dim Autenticazione As New RegVinoAsync.SOAPAutenticazione
8 Try
9 Autenticazione.nomeServizio = "SoggiSIRPV"
10 Autenticazione.username = "??????"
11 Autenticazione.password = "??????"
12 CUUA.ItemElementName = RegVinoAsync.ItemChoiceType.PersonaGiuridica
13 CUUA.Item = "???????????"
14 Servizio.CodOper = CUUA
15 Servizio.TipoRichiesta = RegVinoAsync.SoggSiRPVInputTipoRichiesta.I
16 ReDim Servizio.Soggetto(1) 'Prova invio nr. 1 soggetto SIRPV
17 Servizio.Soggetto(0) = New RegVinoAsync.Soggetto
18 With Servizio.Soggetto(0)
19 .CodiceCUAA = New RegVinoAsync.CUAA
20 .CodiceCUAA.ItemElementName = RegVinoAsync.ItemChoiceType.PersonaFisica
21 .CodiceCUAA.Item = "?????????????"
22 .TipoSoggetto = RegVinoAsync.SoggettoTipoSoggetto.IT
23 .CodiceSoggetto = "10987777"
24 .Cognome = "ROSSI"
25 .Nome = "MARIO"
26 .IndirizzoSede = New RegVinoAsync.Indirizzo
27 .IndirizzoSede.CAP = "21200"
28 .IndirizzoSede.Comune = "BERGAMO"
29 .IndirizzoSede.Indirizzo1 = "VIA DANTE"
30 .IndirizzoSede.Provincia = "TA"
31 .IndirizzoSede.Stato = "IT"
32 End With
33 Richiesta.SOAPAutenticazione = Autenticazione
34 Richiesta.SoggSiRPVInput = Servizio
35 Dim RISPOSTA As New RegVinoAsync.SoggSiRPVResponse
36 RISPOSTA = R1.RegVinoAsync_wsRegVinoAsyncInterService_SoggSiR PV(Richiesta)
37 TbEsito.Text = RISPOSTA.SoggSiRPVOutput.Codice
38 TbID.Text = RISPOSTA.SoggSiRPVOutput.IdTrasmissione
39 Catch ex As Exception
40 MessageBox.Show(ex.Message)
41 Dim xmlout As New StreamWriter("to_xml.txt")
42 Dim x1 As New Xml.Serialization.XmlSerializer(Richiesta.GetType)
43 x1.Serialize(xmlout, richiesta)
44 End Try
45 End Sub
46 End Class

A riga 36, l’invocazione del metodo RISPOSTA = R1.RegVinoAsync_wsRegVinoAsyncInterService_SoggSiR PV(Richiesta)

dovrebbe restituire l’esito della richiesta di trasmissione dei dati ma viene sollevata la seguente eccezione :

015 – Utente non abilitato

Di sicuro le credenziali sono corrette, perché ho provato a testare il SWDL con SOAPUI e funziona.

Infatti, la richiesta in XML che SOAPUI genera, è esattamente la stessa di quella suggerita dal mipaf :

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap="http://cooperazione.sian.it/schema/SoapAutenticazione"
xmlns:wsm="http://cooperazione.sian.it/schema/wsmrga/">
<soapenv:Header>
<soap:SOAPAutenticazione>
<username>XXXXXXXXXX</username>
<password>YYYYYYYYYY</password>
<nomeServizio>SoggSiRPV</nomeServizio>
</soap:SOAPAutenticazione>
</soapenv:Header>
<soapenv:Body>
<wsm:SoggSiRPVInput>
<wsm:CodOper>
<wsm:PersonaGiuridica>00132660739</wsm:PersonaGiuridica>
</wsm:CodOper>
<wsm:TipoRichiesta>I</wsm:TipoRichiesta>
<wsm:Soggetto>
<wsm:CodiceSoggetto>XXXX</wsm:CodiceSoggetto>
<wsm:CodiceCUAA>
<wsm:PersonaGiuridica>RSSMRA55H01I018D</wsm:PersonaGiuridica>
</wsm:CodiceCUAA>
<wsm:TipoSoggetto>IT</wsm:TipoSoggetto>
<wsm:RagioneSociale>ROSSI MARIO</wsm:RagioneSociale>
<wsm:IndirizzoSede>
<wsm:CAP>74023</wsm:CAP>
<wsm:Indirizzo>VIA SAVA 11</wsm:Indirizzo>
<wsm:Provincia>TA</wsm:Provincia>
<wsm:Comune>TORRICELLA</wsm:Comune>
<wsm:Stato>IT</wsm:Stato>
</wsm:IndirizzoSede>
</wsm:Soggetto>
</wsm:SoggSiRPVInput>
</soapenv:Body>
</soapenv:Envelope>

Allora vado a ispezionare il codice XML della richiesta che ho serializzato nel file “to_xml” (riga 43) e noto che il contenuto è diverso da quello generato da SOAPUI.

<?xml version="1.0" encoding="utf-8"?>
<SoggSiRPVRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SOAPAutenticazione>
<username>B8v2tpW</username>
<password>EBjAdjW4</password>
<nomeServizio>SoggiSIRPV</nomeServizio>
</SOAPAutenticazione>
<SoggSiRPVInput>
<CodOper xmlns="http://cooperazione.sian.it/schema/wsmrga/">
<PersonaGiuridica>00132660739</PersonaGiuridica>
</CodOper>
<TipoRichiesta xmlns="http://cooperazione.sian.it/schema/wsmrga/">I</TipoRichiesta>
<Soggetto xmlns="http://cooperazione.sian.it/schema/wsmrga/">
<CodiceSoggetto>10987777</CodiceSoggetto>
<CodiceCUAA>
<PersonaFisica>LNCSVT55H01I018D</PersonaFisica>
</CodiceCUAA>
<TipoSoggetto>IT</TipoSoggetto>
<Nome>MARIO</Nome>
<Cognome>ROSSI</Cognome>
<IndirizzoSede>
<CAP>74020</CAP>
<Indirizzo>VIA SAVA</Indirizzo>
<Provincia>TA</Provincia>
<Comune>TORRICELLA</Comune>
<Stato>IT</Stato>
</IndirizzoSede>
</Soggetto>
</SoggSiRPVInput>
</SoggSiRPVRequest>

Il mio problema


Come faccio a generare lo stessa struttura (nodi, Header, Body e namespace) di SOAPUI ?

grazie per l'aiuto che potete darmi

Salvo