Interfaccia SOAP del FUSC/Simap/FUC ZH - Versione 3.0

Pagina creata da Gabriele Guidi
 
CONTINUA A LEGGERE
Interfaccia SOAP del FUSC/Simap/FUC ZH

                Versione 3.0
Indice

1     Introduzione ...................................................................................................... 4
2     Descrizione........................................................................................................ 5
    2.1       Condizioni per l’utilizzo del web service .......................................................................... 5
    2.2       Il server SOAP................................................................................................................... 5
    2.3       Attivazione del web service .............................................................................................. 5
      2.3.1           Operazioni ad uso di un foglio ufficiale cantonale ....................................................... 6
          2.3.1.1             Operazione getActualCantonNoticeList()...................................................... 6
          2.3.1.2             Operazione getActualCantonNoticeListForCategory(category) .................. 6
          2.3.1.3             Operazione getNoticeList(publishDate) ........................................................ 6
      2.3.2           Operazioni ad uso degli abbonati ................................................................................ 7
          2.3.2.1             getNoticeListForSubscriber(publishDate, subscriptionId)............................ 7
          2.3.2.2       getNoticeListForSubscriberDateRange(publishDateFrom,                                                         publishDateTo,
          subscriptionId) ....................................................................................................................... 7
      2.3.3           Operazioni di uso generale .......................................................................................... 8
          2.3.3.1             getNoticeXml(documentId)............................................................................. 8
          2.3.3.2             getNoticePdf(documentId) ............................................................................. 8
      2.3.4           getNoticeXmls(publishDate) ....................................................................................... 8
      2.3.5           Operazione ad uso del foglio ufficiale del Cantone di Zurigo ....................................... 9
    2.4       Messaggi di errore ............................................................................................................ 9
    2.5       Esempio di programma in Java ..................................................................................... 10

KPS Documents                          Interfaccia SOAP del FUSC/Simap/FUC ZH                                                         Pagina 2/11
Cronologia modifiche

Versione (n.)   Data          Modifica                Pagine   Autore
1.0             15.02.2012    Elaborazione            Tutte    J.Quapp
1.1             10.04.2012    Piccole modifiche e Tutte        J.Quapp
                              esempio           di
                              programma
1.2             24.05.2012    Modifiche di dettagli            J.Quapp
2.0             01.10.2012    Ampliamento        del Tutte     J.Quapp
                              service
2.01            24.10.2012    Correzioni del testo             J.Quapp
3.0             22.11.2012    Correzioni del testo             SECO

KPS Documents      Interfaccia SOAP del FUSC/Simap/FUC ZH          Pagina 3/11
1 Introduzione

Il FUSC e Simap offrono un’interfaccia SOAP per gestire la chiamata delle API. Il
presente documento contiene tutte le informazioni necessarie per l’utilizzazione
dell’interfaccia SOAP. Se non siete ancora registrati come utenti in FUSC o in Simap,
potete farlo cliccando sui link seguenti:
https://www.shab.ch/ oppure https://www.simap.ch/
SOAP è un protocollo (basato su http) per l’offerta di web service. Il web service
permette di accedere alle funzioni messe a disposizione dal FUSC e da Simap
partendo da un altro programma e indipendentemente dal linguaggio di
programmazione utilizzato per quest’ultimo.

KPS Documents         Interfaccia SOAP del FUSC/Simap/FUC ZH             Pagina 4/11
2 Descrizione

2.1 Condizioni per l’utilizzo del web service
   •   L’utente del web service deve essere registrato come utente del FUSC/Simap.
   •   L’accesso a funzioni speciali richiede la concessione di diritti supplementari
       all’utente.

2.2 Il server SOAP
L’accesso al server SOAP avviene mediante gli URL seguenti:
https://www.shab.ch/soapserver oppure https://www.simap.ch/soapserver

2.3 Attivazione del web service
È indispensabile effettuare l’autenticazione nell’header http.
Se con la richiesta della funzione non viene inviata l’autenticazione con l’header http,
in risposta si riceve un messaggio di errore. L’autenticazione nell’header http avviene
mediante i due parametri username (nome utente) e password
(password).
La struttura dell’header http è perciò la seguente:
POST /soapserver HTTP/1.1
username: [NOME UTENTE]
SOAPAction: ""
Accept: text/xml, multipart/related, text/html, image/gif, image/jpeg, *;
q=.2, */*; q=.2
Content-Type: text/xml; charset=utf-8
password: [PASSWORT]
User-Agent: Java/1.6.0_23
Host: www.shab.ch
Connection: keep-alive
Content-Length: 273
Il nome utente e la password sono identici a quelli utilizzati per l’accesso a
FUSC/Simap.
L’utilizzazione del web service può avvenire soltanto dopo l’autenticazione. Vi
rammentiamo che in alcuni casi l’attivazione del web service richiede
un’autorizzazione speciale.
L'autenticazione può essere verificata mediante la funzione getAuthentication.

KPS Documents          Interfaccia SOAP del FUSC/Simap/FUC ZH               Pagina 5/11
Operazioni supportate
Qui di seguito sono descritte tutte le funzioni offerte dal service. Tutte le altre funzioni
sono destinate ad un uso interno e pertanto non sono disponibili.

2.3.1 Operazioni ad uso di un foglio ufficiale cantonale
I fogli ufficiali cantonali possono caricare nel loro sistema redazionale le nuove
comunicazioni mediante le funzioni di cui sotto. Le comunicazioni possono essere
caricate in formato xml.
2.3.1.1 Operazione getActualCantonNoticeList()
Descrizione:
Questa funzione visualizza tutti gli ID delle comunicazioni convalidate e pubblicate,
con data di chiusura redazionale compresa nei 14 giorni che precedono l’avvio della
ricerca.
Sono trasmessi soltanto i dati relativi alle comunicazioni
   -   il cui stato è «approvato» o «pubblicato»;
   -   selezionate nel FUSC nella sezione corrispondente a quella scelta al
       momento della registrazione dalla tipografia cantonale.
Accessibilità: l’accesso all’operazione è consentito soltanto se lo stato di utente
corrisponde a «tipografia cantonale».
2.3.1.2 Operazione getActualCantonNoticeListForCategory(category)
Argomenti:
   -   category   si tratta della sigla di una rubrica, formata da due segni.
       Esempio: «KK»=fallimenti
Descrizione:
Questa funzione visualizza tutti gli ID delle comunicazioni convalidate e pubblicate,
con data di chiusura redazionale compresa nei 14 giorni che precedono l’avvio della
ricerca.
Sono trasmessi soltanto i dati relativi alle comunicazioni:
   -   il cui stato è «approvato» o «pubblicato»;
   -   selezionate     nel      FUSC         nella      rubrica    [category];
       [category] può assumere i seguenti valori: «AW»,«KK»,«NA»,«SB»,«HR»;
   -   in Simap [category] può assumere soltanto il valore «OB»;
Accessibilità: l’accesso all’operazione è consentito soltanto se lo stato di utente
corrisponde a «tipografia cantonale».

2.3.1.3 Operazione getNoticeList(publishDate)
Argomenti:
   -   publishDate si tratta di una data di pubblicazione.

KPS Documents           Interfaccia SOAP del FUSC/Simap/FUC ZH                 Pagina 6/11
Descrizione:
Una tipografia cantonale ottiene tutti gli ID relativi ai documenti oggetto di
comunicazioni con la data di pubblicazione indicata. Sono trasmessi soltanto i dati
relativi alle comunicazioni:
   -   il cui stato è «approvato» o «pubblicato»;
   -   selezionate nel FUSC nella rubrica corrispondente a quella scelta al momento
       della registrazione da parte della tipografia cantonale.
Accessibilità: l’accesso all’operazione è consentito soltanto se lo stato di utente
corrisponde a «tipografia cantonale».

2.3.2 Operazioni ad uso degli abbonati
Gli abbonati possono ricevere comunicazioni in formato xml anche tramite questo
web service se hanno scelto il formato di dati corrispondente.
2.3.2.1 getNoticeListForSubscriber(publishDate, subscriptionId)
Argomenti:
   -   publishDate         si tratta di una data di pubblicazione del FUSC;
   -   subscriptionId      si tratta dell’ID del vostro abbonamento. L’ID
       dell’abbonamento si trova nell‘area clienti abbonamento online – i miei dati
       nell’elenco abbonati. Nel caso di abbonamenti rinnovati è sufficiente un ID
       qualsiasi.
Descrizione: si ottiene un elenco di ID di comunicazioni. L’elenco viene generato
dalla ricerca avviata dall’abbonato. Le comunicazioni corrispondono a quelle che
l’abbonato vede nella sua area clienti per la data di pubblicazione scelta.
Viene generato un elenco di ID di comunicazioni pubblicate alla data specificata e
rispondenti ai criteri di ricerca definiti dall’abbonato.
Accessibilità: l’accesso all’operazione è consentito soltanto se lo stato di utente
corrisponde a «abbonato FUSC».
2.3.2.2 getNoticeListForSubscriberDateRange(publishDateFrom,
        publishDateTo, subscriptionId)
Argomenti:
   -   publishDateFrom si tratta di una data di pubblicazione del FUSC (a partire
       da);
   -   publishDateTo       si tratta di una data di pubblicazione del FUSC (fino a);
   -   subscriptionId      Si tratta dell’ID del vostro abbonamento. L’ID
       dell’abbonamento si trova nell‘area clienti abbonamento online – i miei dati
       nell’elenco abbonati. nel caso di abbonamenti rinnovati è sufficiente un ID
       qualsiasi.
Descrizione: viene trasmesso un elenco di ID di comunicazioni. L’elenco viene
generato dalla ricerca avviata dall’abbonato. Le comunicazioni corrispondono a
quelle che l’abbonato vede nella sua area clienti per l’arco di tempo scelto per la data
di pubblicazione [publishDateFrom]-[ publishDateTo].

KPS Documents          Interfaccia SOAP del FUSC/Simap/FUC ZH               Pagina 7/11
Viene generato un elenco di ID di comunicazioni pubblicate nell’arco di tempo
specificato e rispondenti ai criteri di ricerca definiti dall’abbonato.
Accessibilità: l’accesso all’operazione è consentito soltanto se lo stato di utente
corrisponde a «abbonato FUSC».
Vi rammentiamo che occorre inserire sempre l’ID dell’abbonamento in corso.

2.3.3 Operazioni di uso generale
Le seguenti operazioni sono accessibili a diversi gruppi di utenti.
2.3.3.1 getNoticeXml(documentId)
Argomenti:
   -   documentId           si tratta del numero di una comunicazione;
Descrizione:
Effettuando l’operazione si ottiene un documento in formato xml della comunicazione
corrispondente all’ID indicato.
La descrizione dell’xml della comunicazione è disponibile su www.shab.ch oppure.
www.simap.ch.
Accessibilità: l’accesso all’operazione è consentito soltanto se l’utente è registrato.
La comunicazione deve essere stata pubblicata. Se l’utente è un amministratore
cantonale vengono visualizzate anche le comunicazioni «convalidate».
2.3.3.2 getNoticePdf(documentId)
Argomenti:
   -   documentId           si tratta del numero di una comunicazione;
Descrizione:
Effettuando l’operazione si ottiene un documento in formato pdf della comunicazione
corrispondente all’ID indicato.
Accessibilità: l’accesso all’operazione è consentito soltanto se l’utente è registrato.
Considerato che i documenti in pdf sono disponibili soltanto nel FUSC, anche
l’operazione può essere effettuata soltanto nel FUSC.

2.3.4 getNoticeXmls(publishDate)
Argomenti:
   -   publishDate          si tratta di una data di pubblicazione del FUSC;
Descrizione:
Effettuando l’operazione si ottiene un documento in formato xml di tutto il file. Il file
intero contiene tutte le comunicazioni pubblicate alla data indicata.
Come argomento occorre indicare una data di pubblicazione del FUSC.
Accessibilità: l’accesso all’operazione è consentito soltanto se l’utente è registrato.
L’operazione è accessibile soltanto nel FUSC. L’operazione può essere effettuata
soltanto per i numeri pubblicati.

KPS Documents           Interfaccia SOAP del FUSC/Simap/FUC ZH               Pagina 8/11
2.3.5 Operazione ad uso del foglio ufficiale del Cantone di Zurigo
Le operazioni seguenti vengono effettuate soltanto in relazione al foglio ufficiale del
Cantone di Zurigo: si tratta perciò di operazioni disponibili soltanto con la relativa
installazione.
     •   getActualCantonNoticeListForCategoryWithStatus
     •   getAttachment
     •   getProviderFromNotice

2.4 Messaggi di errore
La segnalazione di un errore può avvenire sia mediante codice di errore sia mediante
messaggio di errore. Si tratta di una segnalazione generica («fault»). Ad ogni «fault»
sono attribuiti due parametri: «code» e «message».
Il codice di errore viene trasmesso mediante l’operazione getFaultInfo.getCode().
Il messaggio che specifica                  il     tipo   di   errore    viene   trasmesso   con
getFaultInfo.getMessage().

Elenco dei messaggi di errore:

Codice      di Descrizione del tipo di errore
errore
0               Internal error !
1               You do not have sufficient rights to perform this operation !
2               Date out of range !
10              Internal error in getAuthenticationObject!
20              Not authenticated!
21              Internal error in getNoticeList!
30              Error in service getNotice. Not authenticated!
31              Internal Error in getNoticeXml !
32              Error in service getNotice. Notice not available!!
35              Internal Error in getNoticeXmls !
36              Error in service getNoticeXmls. Not authenticated!
37              Error in service getNoticeXmls. Date not published!
40              Error in service getProvider. Not authenticated!
41              Internal error in getProviderFromNotice !
42              Internal error in getProvider !
50              Error in service getAttachment. Not authenticated!
51              Internal error in getAttachment !
52              No document in getAttachment !

KPS Documents               Interfaccia SOAP del FUSC/Simap/FUC ZH                   Pagina 9/11
60                Error in authentication. User is not a subscriber!
61                Error in getNoticeListForSubscription. Subscription id is not valid for the subscriber!
62                Error in getNoticeListForSubscription. Error processing search list!
70                Error in service getNoticePdf. Not authenticated !
71                Internal error in getNoticePdf !
72                No document in getNoticePdf !

2.5 Esempio di programma in Java
L’esempio di programma è finalizzato a illustrare l’esecuzione degli elementi
fondamentali della programmazione per un client in relazione a questo web service.
Nota: per il programma di cui sotto occorre prima di tutto generare classi di client. La
generazione      di   queste      classi    avviene       mediante     il     comando
wsimport -keep -p [package Java per i dati generati]
-s        [percorso        per        i         file                                          sorgente]
https://www.shab.ch/soapserver?wsdl

______________________________________________________________________________________________
import java.net.URL;
import java.text.SimpleDateFormat;
import java.util.Collections;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import javax.xml.datatype.DatatypeFactory;
import javax.xml.datatype.XMLGregorianCalendar;
import javax.xml.namespace.QName;
import javax.xml.ws.BindingProvider;
import javax.xml.ws.handler.MessageContext;
import de.autinform.exchange.common.soap.client.notice.Fault;
import de.autinform.exchange.common.soap.client.notice.LongArray;
import de.autinform.exchange.common.soap.client.notice.SoapServer;
import de.autinform.exchange.common.soap.client.notice.SoapServerService;

public class Example      {
   private final static        SimpleDateFormat      dateFormat   =    new   SimpleDateFormat("dd.MM.yyyy",
Locale.getDefault());

     public Example() {
     }

     public   void main(String username, String password) {
         // Erstellung einer Verbindung zum Soap Server

KPS Documents                 Interfaccia SOAP del FUSC/Simap/FUC ZH                         Pagina 10/11
String servername = "www.shab.ch";
       int port = 9191;
       try {
           URL url = new URL("http://" + servername + ":" + port +"/soapserver?wsdl");
           QName serviceName = new
                  QName("http://notice.server.soap.common.exchange.autinform.de/",
                           "SoapServerService");
           SoapServerService service = new SoapServerService(url,serviceName);
           SoapServer servicePort = service.getSoapServerPort();
           /******************* Authentication ******************************/
           Map req_ctx =
                  ((BindingProvider)servicePort).getRequestContext();
           Map headers = new HashMap();
           headers.put("username", Collections.singletonList(username));
           headers.put("password", Collections.singletonList(password));
           req_ctx.put(MessageContext.HTTP_REQUEST_HEADERS, headers);
           /**********************************************************************/
           boolean succesfulAuthentication = servicePort.getAuthentication();
           if (succesfulAuthentication) {
               System.out.println("Authentication successful!");
           } else {
               System.out.println("Authentication not successful!");
               return;
           }

           GregorianCalendar c = new GregorianCalendar();
           c.setTime(dateFormat.parse("26.01.2013"));
         XMLGregorianCalendar                           publishDate                                 =
DatatypeFactory.newInstance().newXMLGregorianCalendar(c);
           LongArray arrayList = servicePort.getNoticeListForSubscriber(publishDate,
                  4711);
           List noticeList = arrayList.getItem();
           for (int i=0; i
Puoi anche leggere