Visualizzazione dei risultati da 1 a 4 su 4

Discussione: web service con vb.net 2017

  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2017
    Messaggi
    2

    web service con vb.net 2017

    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

  2. #2
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,061
    il tuo problema non e' generare la stessa busta di SoapUI, ma piuttosto quello di seguire il giro che fa il tuo codice quando non ti affidi a SoapUI.

    Controlla bene che user e pw facciano il "viaggio" giusto, perche' cio' che ti restituisce NON e' una eccezione, è un messaggio gestito e ben preciso. Da qualche parte si perdono user e pw, oppure è qualche impiccio interno.

    Di sicuro il problema non è l'envelope che genera il framework.
    press play on tape

    ---
    [Solution] MP3 Listing,
    un mio piccolo contributo ai software per dj:
    https://sourceforge.net/projects/mp3-listing

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2017
    Messaggi
    2
    Grazie per aver risposto, gentilissimo.
    ma la il file di esempio pubblicato dal mipaf è uguale a quello del soapui.
    davvero non so dove sbattere la testa.

  4. #4
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,061
    debug. e vedi cosa accade ad user e pw

    che il mipaf abbia pubblicato l'xml di SoauUI ci sta, ma non è l'unico possibile e l'unico giusto, questo ti è chiaro ?

    comunque ti ribadisco che non è una eccezione, è un dato che prende una strada sbagliata
    press play on tape

    ---
    [Solution] MP3 Listing,
    un mio piccolo contributo ai software per dj:
    https://sourceforge.net/projects/mp3-listing

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2017 vBulletin Solutions, Inc. All rights reserved.