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 :
- le credenziali di accesso all’ambiente di test (utenza: ?????? e password: ??????)
- e gli INDIRIZZI DI CONNESSIONE ALL'AMBIENTE DI TEST Registro di carico e scarico vitivinicolo
- SERVIZI ASINCRONI: https://registri.sian.it/wsTOAST/ser...VinoAsync?wsdl
- SERVIZI SINCRONI: https://registri.sian.it/wsTOAST/ser...wsRegVino?wsdl
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