Procedura di inserimento automatico
DEFINIZIONE WEB SERVICE Secondo la definizione data dal World Wide Web Consortium (W3C) un Web Service (servizio web) è un sistema software progettato per supportare l'interoperabilità tra diversi elaboratori su di una medesima rete. Caratteristica fondamentale di un Web Service è quella di offrire un'interfaccia software (descritta in un formato automaticamente elaborabile quale, ad esempio, il Web Services Description Language) utilizzando la quale altri sistemi possono interagire con il Web Service stesso attivando le operazioni descritte nell'interfaccia tramite appositi messaggi inclusi in una busta (la più famosa è SOAP). Tali messaggi sono, solitamente, trasportati tramite il protocollo HTTP e formattati secondo lo standard XML.
WSDL L'interfaccia pubblica di un Web Service viene descritta tramite WSDL (Web Services Description Language) un linguaggio basato su XML usato per la creazione di "documenti" descrittivi delle modalità di interfacciamento ed utilizzo del Web Service. All'interno del wsdl troviamo le informazioni necessarie per raggiungere il web service: Locazione Namespace Nome del metodo da invocare Parametri da passare al metodo
Il web ser vice di inserimento automatico Il descrittore (WSDL) del web service per l'inserimento automatico (Rilascio Automatico Permesso) è disponibile nel documento rilasciato da Autostrade Tech all'interno della sezione manualistica del portale, all'indirizzo: https://ztl.comune.fi.it/tzi/manuali/inserimento%20automatico.pdf o all'indirizzo: https://ztl.comune.fi.it/tzi/services/rilascioautomaticopermesso?wsdl All'interno del wsdl sono collocate le informazioni essenziali per sviluppare il client.
Indirizzo del web service: <wsdlsoap:address location="https://ztl.comune.fi.it/tzi/services/rilascioautomaticopermesso"/> targetnamespace: targetnamespace="http://ztl.autostrade.it" Nome del metodo da invocare: <element name="rilasciopermesso"> Nome e tipo dei parametri da passare al metodo: <sequence> <element name="utente" type="xsd:string"/> <element name="password" type="xsd:string"/> <element name="codicefiscale" type="xsd:string"/> <element name="targa" type="xsd:string"/> <element name="targaitaliana" type="xsd:int"/> <element name="tipoveicolo" type="xsd:int"/> <element name="nome" type="xsd:string"/> <element name="cognome" type="xsd:string"/> <element name="comune" type="xsd:string"/> <element name="numerocontrassegno" type="xsd:string"/> </sequence>
Metodo di risposta: <element name="rilasciopermessoresponse"> Tipo di dato restituito: <element name="rilasciopermessoreturn" type="xsd:string"/> Importante: Per effettuare la procedura di inserimento automatico è necessario utilizzare utente, password e codice fiscale dell'utente registrato sul portale come rappresentante legale dell'azienda.
Ambiente di test Per consentire agli sviluppatori degli utenti del portale di effettuare i test senza impattare sull'ambiente di produzione è stato reso disponibile un ambiente di test; il wsdl del servizio test è disponibile all'indirizzo: http://212.210.112.163:8085/tzi/services/rilascioautomaticopermesso?wsdl Per richiamare il web service di test utilizzare come locazione del servizio l'indirizzo http://212.210.112.163:8085/tzi/services/rilascioautomaticopermesso Tutto il resto rimane immutato. All'interno dell'ambiente di prova è stato creato un utente di test con le seguenti credenziali Usr ricettivaprova Pwd Password1 Cod fisc VRDGPP60A01A015L
Implementazione in ASP Il seguente esempio è stato realizzato utilizzando Visual Web Developer 2008 express edition. 1. Aprire Visual Web Developer 2. File New Web Site Asp.net web site 3. Incollare il seguente codice Nota: Il codice riportato di seguito richiama l'ambiente di test.
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" aspcompat=true%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>test connessione ws</title> </head> <body> <form id="form1" runat="server"> <div> Test di connessione con il web service <br/> <% dim xmlhttp = Server.CreateObject("MSXML2.ServerXMLHTTP") with xmlhttp.open("post", "http://212.210.112.163:8085/tzi/services/rilascioautomaticopermesso", false).setrequestheader("content-type", "text/xml").setrequestheader("soapaction", "http://ztl.autostrade.it/").send(vedi xml slide successiva) end with dim strstatus = xmlhttp.status dim strretval = xmlhttp.responsetext response.write(strstatus & " " & strretval) xmlhttp = nothing %> </div> </form> </body> </html>
<?xml version="1.0" encoding="utf-8"?> <soap:envelope xmlns:xsi="http://www.w3.org/2001/xmlschemainstance" xmlns:xsd=\"http://www.w3.org/2001/xmlschema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:body> <rilasciopermesso> <utente>nomeutente</utente> <password>xxxxxxxx</password> <codicefiscale>xxxxxxxxxxxxxxxx</codicefiscale> <targa>ab000cd</targa> <targaitaliana>1</targaitaliana> <tipoveicolo>1</tipoveicolo> <nome>marco</nome> <cognome>fontana</cognome> <comune>firenze</comune> <numerocontrassegno>1234567</numerocontrassegno> </rilasciopermesso> </soap:body> </soap:envelope>
Implementazione JAVA Ambiente di sviluppo 1. XP 2. Eclipse 3. Apache Tomcat 6 4. Axis2
Configurazione Axis all'interno di Eclipse 1. scaricare axis2 e salvarlo localmente 2. specificare il percorso di axis2: windows preference web services axis2 preferences axis2 runtime e specificare la locazione di axis2.
Passi per implementazione client Creare una nuova applicazione web: File new dynamic web project; si aprirà una finestra: Inserire il nome del progetto, nel nostro caso ClentRilascioAutomatico; Cliccare sul pulsante new runtime e selezionare apache tomcat 6 quindi premere next; Successivamente indicare il percorso di installazione del tomcat 6 (vedi CATALINA_HOME); quindi premere finish; Al termine dell'operazione una volta tornati sulla finestra principale premere su finish; a questo punto il progetto è stato creato;
Cliccare col tasto destro sul nodo del progetto: new other web service client; premere avanti; si aprirà una finestra di dialogo su cui dovranno essere effettuate le seguenti operazioni: Specificare service definition: http://212.210.112.163:8085/tzi/services/rilascioautomatico Permesso?wsdl Se si verificano dei problemi in alternativa procedere con i seguenti passi: a)inserire nel browser l'indirizzo sopra riportato; b)copiare il contenuto della pagina web; c)salvarlo in un file.xml denominato RilascioAutomaticoPermesso.wsdl; d)creare una cartella wsdl sotto la cartella web content dove inserire il file RilascioAutomaticoPermesso.wsdl; e)selezionare tramite il pulsante browse, il file appena creato;
Cliccare su web service runtime e selezionare axis2; premere ok; A questo punto premere next e successivamente finish;se tutto è andato a buon fine all'interno dei src packages dell'applicativo dovrebbe comparire il pacchetto it.autostrade.ztl contenente le classi java RilascioAutomaticoPermessoServiceCallbackHandler.java RilascioAutomaticoPermessoServiceStub.java
Prima di procedere con i passi restanti dell'implementazione dovrà essere gestito il certificato di autostrade. scaricare il certificato; se si utilizza firefox: selezionare nel menù principale strumenti opzioni nella dialog box opzioni selezionare avanzate; quindi selezionare il tab cifratura; successivamente premere sul pulsante mostra certificati e selezionare il tab server; se il certificato denominato ztl.comune.fi.it è presente tra i certificati, selezionarlo e premere il pulsante esporta; il certificato dovrà essere salvato come Certificato X.509 (PEM). Tenere a mente il path dove è stato salvato il certificato; se il certificato non è presente seguire la procedura guidata proposta dal browser; aprire un terminale e digitare le seguenti istruzioni: keytool -import -v -alias <nome alias> -keystore <path key store\nome key store>.jks -storepass <password> -file <path certificato/nome certificato>
Passi conclusivi Cliccare col destro sul package it.autostrade.ztl e selezionare la voce class; denominare la classe creata con il nome Start; il contenuto della classe Start.java è il seguente:
public static void main(string[] args) { System.setProperty("javax.net.ssl.trustStore", "C://tzi.jks"); System.setProperty("javax.net.ssl.trustStorePassword", "password"); System.setProperty("javax.net.ssl.trustStoreType", "JKS"); try { RilascioAutomaticoPermessoServiceStub stub = new RilascioAutomaticoPermessoServiceStub(); try { RilascioAutomaticoPermessoServiceStub.RilascioPermesso p = new RilascioAutomaticoPermessoServiceStub.RilascioPermesso(); p.setutente("xxxx"); p.setpassword("xxxx"); p.setcodicefiscale("xxxxxxxxx"); p.settarga("1234567"); p.settargaitaliana(1); p.settipoveicolo(1); p.setcognome("fontana"); p.setnome("m"); p.setcomune("firenze"); p.setnumerocontrassegno("1234567"); System.out.println(stub.rilascioPermesso(p).getRilascioPermessoReturn()); } catch (RemoteException e) { e.printstacktrace(); } } catch (AxisFault e) { e.printstacktrace(); } }
Le prime tre istruzioni sono per la gestione dei certificati; successivamente si istanzia lo stub, creato in automatico. Successivamente si istanzia l'oggetto p di tipo RilascioPermesso; su questo oggetto vengono effettuati gli opportuni settaggi. Successivamente si effettua la chiamata sul metodo rilasciopermesso. Per eseguire la classe start cliccare con il destro run as java application; sulla console di eclipse sarà visibile il risultato della chiamata al web service. Se il client riesce a stabilire la comunicazione con il web service ci si attende un messaggio di risposta formattato nel seguente modo: <codice esito operazione> <data operazione> <descriz. esito>
Ad esempio se l'inserimento va a buon fine il messaggio sarà del tipo: 0 13/12/2011 11:34:24 Inserimento avvenuto correttamente L'elenco completo dei codici di ritorno è contenuto all'interno del manuale per la procedura di inserimento automatico presente all'interno della sezione manualistica del portale.