1 messaggio dal 08 settembre 2014
Salve, ho lo stesso problema, non è che si potrebbe avere l'esempio completo e funzionante di un invocazione al web service.

Grazi in anticipo
11.886 messaggi dal 09 febbraio 2002
Contributi
benvenuto nel forum.


si potrebbe avere l'esempio completo e funzionante

Certo, siamo qui apposta :)

https://1drv.ms/u/s!Ao4rhSdtDw8riQ9pcE3e2yjgNIh8

Istruzioni
  • Apri Fiddler
  • Avvia il debug del programma (tasto F5)
  • Osserva la richiesta al servizio comparire su Fiddler. Se guardi il contenuto noterai l'intestazione Authorization


Le parti "interessanti" sono il BasicAuthenticationBehavior, il BasicAuthenticationInspector, e questa riga di codice che configura il behavior nell'endpoint del client.
client.Endpoint.EndpointBehaviors.Add(new BasicAuthenticationBehavior(username: "Mario", password: "abc123"));



ciao,
Moreno
Modificato da BrightSoul il 01 luglio 2016 07.43 -

Enjoy learning and just keep making
4 messaggi dal 30 settembre 2014
Ciao, il link da te citato non è più raggiungibile, sei ancora disponibile a pubblicare il progetto funzionante che gli do un'occhiata?
Sto letteralmente impazzendo!
11.886 messaggi dal 09 febbraio 2002
Contributi
[Edit]
Link aggiornato sopra.

ciao,
Moreno
Modificato da BrightSoul il 01 luglio 2016 07.44 -

Enjoy learning and just keep making
4 messaggi dal 30 settembre 2014
Ciao! no io mi riferivo al progetto pubblicato da Sem al "http://www.dotcom.it/download/dem-ricetta2.zip". Comunque anche il tuo progetto di esempio mi è stato molto utile.

Questa è attualmente la mia Void Main (lasciate perdere i dati, sono solo delle prove):
static void Main(string[] args)
        {
            //ISTRUZIONI
            //1. Apri Fiddler
            //2. Avvia il debug di questo programma
            //3. Torna su Fiddler e osserva come la richiesta al servizio contenga l'intestazione Authorization
            //Console.WriteLine("inizio comunicazione..");
            //Console.ReadLine();

            //var client = new EsempioServizioClient();
            //Aggiungo il behavior che mi aggiunge i dati all'intestazione della richiesta
            //client.Endpoint.EndpointBehaviors.Add(new BasicAuthenticationBehavior(username: "UWT3CBXX", password: "PBUW9EBP"));

            VisualizzaErogato.VisualizzaErogatoRichiesta er = new VisualizzaErogato.VisualizzaErogatoRichiesta();
            er.pinCode = "0Gv1vsTpzlvRD9kBd8FVLo2/441rZ8rRZVf0Zi9eO6+L7kme0KC8Vx6ZjRj/4JjA4aHPTCi3D6YW9OtmYkIpW7sfchmhqHdVORBZHPitiPHdr5iIipAhIzBhFOQIPfpYasW5cQmU//uNB4GSWSNDIkaqdMrDjTPpIkbKKeoA4dQ=";
            er.codiceRegioneErogatore = "190";
            er.codiceAslErogatore = "190209";
            er.codiceSsaErogatore = "888888";
            er.pwd = "PBUW9EBP";
            er.nre = "1900A4000004510";
            er.cfAssistito = "T8L5DQ4L7vZWEQ3gGWUhMYYRoGZAIsZSCZ4AieAmIKZ85B6HarO5s/jhtnp5m4r44JiwBRPYyYxtzP4npmLyk8zFSSuVxDAU3oaUdO0lOnDWKZjf886o2nbmSsPEiXYlTaJnWRU420qrQ4Sa2HfEK/32wXsOSq7TCpoMFYhkXeA=";
            er.tipoOperazione = "1";

            BasicHttpBinding b = new BasicHttpBinding();
            EndpointAddress ea = new EndpointAddress("https://demservicetest.sanita.finanze.it/DemRicettaErogatoServicesWeb/services/demVisualizzaErogato");
            VisualizzaErogato.visualizzaErogatoPTClient client = new VisualizzaErogato.visualizzaErogatoPTClient(b, ea);

            BasicAuthenticationBehavior bb = new BasicAuthenticationBehavior("UWT3CBXX-", "PBUW9EBP");
            
            VisualizzaErogato.VisualizzaErogatoRicevuta ric;// = new VisualizzaErogato.VisualizzaErogatoRicevuta();

            client.Endpoint.EndpointBehaviors.Add(bb);

            ric = client.visualizzaErogato(er);

            //Console.WriteLine("inizio invio..");
            
            //Console.WriteLine("fine invio..");

            //VisualizzaErogato.VisualizzaErogatoRicevuta re = new VisualizzaErogato.VisualizzaErogatoRicevuta();

            //client.Open();

            Console.WriteLine(ric.nre);
            Console.WriteLine(ric.ToString());
            //Console.WriteLine(client.Endpoint.Address.);
            Console.ReadLine();

        }



Però avviando il progetto ricevo questo errore: "Schema URI fornito 'https' non valido. Previsto 'http'.". Ho provato a modificare il config come indicato nel sottostante link:
http://forum.html.it/forum/showthread/t-1542123.html ma non cambia assolutamente nulla..qualche suggerimento?
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,

o_tankian_o ha scritto:

Schema URI fornito 'https' non valido. Previsto 'http

Ti serve un basicHttpsBinding, dunque prova a sostituire questo:
BasicHttpBinding b = new BasicHttpBinding();

Con questo:
BasicHttpsBinding b = new BasicHttpsBinding();


ciao,
Moreno

Enjoy learning and just keep making
4 messaggi dal 30 settembre 2014
Ciao, innanzitutto grazie mille per la gentilezza e per il tuo tempo.

Ho modificato il codice in questo modo:

BasicHttpsBinding b = new BasicHttpsBinding();
            EndpointAddress ea = new EndpointAddress("https://demservicetest.sanita.finanze.it/DemRicettaErogatoServicesWeb/services/demVisualizzaErogato");
            VisualizzaErogato.visualizzaErogatoPTClient client = new VisualizzaErogato.visualizzaErogatoPTClient(b, ea);

            BasicAuthenticationBehavior bb = new BasicAuthenticationBehavior("UWT3CBXX-", "PBUW9EBP");
            
            VisualizzaErogato.VisualizzaErogatoRicevuta ric;// = new VisualizzaErogato.VisualizzaErogatoRicevuta();

            client.Endpoint.EndpointBehaviors.Add(bb);

            ric = client.visualizzaErogato(er);


Adesso però ricevo una SecurityNegotiationException in questa riga di codice:

ric = client.visualizzaErogato(er);


l'errore esatto è: Impossibile stabilire relazioni di trust per il canale sicuro SSL/TLS con l'autorità 'demservicetest.sanita.finanze.it'.
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,
se visiti l'indirizzo https://demservicetest.sanita.finanze.it, il browser ti mostrerà un errore legato alla validità del loro certificato SSL, che è stato autofirmato anziché essere emesso da una certification authority riconosciuta.

La SecurityNegotiationException, probabilmente, dipende dalla stessa causa. Devi fare in modo che il tuo programma ignori quell'errore e reputi valido quel certificato. Dunque prova a mettere questa riga di codice prima di inviare richieste al servizio:
ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, sslPolicyErrors) => true;

Questo esempio reputerà valido qualsiasi certificato, dato che il delegato ritorna true in ogni caso.

ciao,
Moreno

Enjoy learning and just keep making

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.